Archiv der Kategorie: Programmierung

Klein aber fein – der MiniGameJam in Dortmund

Am 10.06.2017 fand der erste Game Jam in Dortmund statt – noch ein wenig zaghaft als Mini Game Jam tituliert. An einem sonnigen Samstag fanden sich ca. 20 interessierte Entitäten im Dortmunder Künstlerhaus direkt hinter dem Hauptbahnhof ein, um in nur acht Stunden ein vollständiges Spiel zu programmieren. Nach einer kurzen Kennenlernrunde haben sie Teams gebildet und konnten ein Thema aus den Vorschlägen „Familie“, „Grenzen überwinden“, „old school“ und „Zwei Buttons“ auswählen.

Ich selbst bildete mit Reinhard und Miriam ein Team, das mit keiner konkreten Idee für ein Spiel, aber für dessen Ausgabemedium startete.

Wir wollten ein Oszilloskop als Bildschirm verwenden. Normalerweise werden diese Geräte benutzt, um Wechselspannungen in Kurven zu visualisieren. Wenn man den Elektronenstrahl jedoch geschickt umlenkt und als analoges Signal auf zwei Eingangskanäle sendet, kann im XY-Betrieb faktisch Beliebiges auf dem Geräte dargestellt werden – soweit zumindest die Theorie. Wir haben einen Digtial-Analog-Wandler aus Widerständen erstellt und mit einem RaspberryPi angesteuert. Damit waren wir in der Lage, eine bescheidene Auflösung von 32×64 Bildpunkten auf dem Gerät darzustellen. Bei höheren Auflösungen flackerte das Bild aus Gründen, die wir in der kurzen Zeit nicht ergründen konnten wollten.

Nach ca. drei Stunden konnten wir beliebige Punkte auf dem Gerät positionieren und uns (endlich) um eine Spielidee kümmern. Wenig kreativ und motiviert durch die technischen Einschränkungen entschieden wir uns für eine Abwandlung des bekannten Spiels „flappy bird“, in dem ein Vogel zwischen Röhren hindurch manövriert werden muss. Gesteuert wird der Vogel mit nur einem Taster: beim Drücken fliegt der Vogel hinauf, lässt man den Button wieder los, sinkt er wieder. Diese Steuerung haben wir über eine kleine Platine mit zwei Tastern realisiert – der zweite Taster konnte das Spiel nach einem Game Over neu starten.

Da noch etwas Zeit übrig war, konnten wir uns Gedanken über eine Audioausgabe machen. Diese erfolgte über zwei kleine „Lautsprecher“, die wir ebenfalls über den Raspberry Pi angesteuert haben.

Das Projekt ist inklusive des Quelltextes bei github unter dem Namen osziflap abrufbar.

Am 7.10.2017 geht es (vielleicht?) weiter mit dem nächsten Game Jam – vielleicht nicht mehr Mini, vielleicht wieder in Dortmund, gewiss aber wieder mit mir.

 

FizzBuzz Katas – Programmierübungen für das FizzBuzz-Problem

(Das Video bei archive.org.)

Bei dem FizzBuzz-Spiel werden die Zahlen von 1 bis 100 durchlaufen. Nun können folgende Fälle eintreten:

  • Wenn die Zahl durch 3 teilbar ist, wird „Fizz“ ausgegeben
  • wenn sie durch 5 teilbar ist, wird „Buzz“ ausgegeben und
  • wenn sie durch 3 und 5 teilbar ist, wird „FizzBuzz“ ausgegeben.
  • Tritt keiner dieser Fälle ein, wird die Zahl ausgegeben.

Viele Lösungen gibt es auf meiner Webseite.

Micropython auf einem ESP8266

esp8266

Hinter Micropython verbirgt sich eine Variante von Python, die auf Mikrocontroller zugeschnitten ist. Der ESP8266 ist ein recht günstiger (~4$) Baustein mit WLAN-Funktionen, für den jetzt eine Micropython-Firmware erschienen ist. Über das Development-Kit, das auf dem Bild zu sehen ist, verfügt der Baustein über einen USB-Anschluss, über den man mit dem Chip kommunizieren kann. Die PINs sind herausgeführt und lassen sich in Schaltungen verwenden.

Nun soll die Firmware für Micropython installiert werden. Diese lässt sich von der Webseite herunterladen. Für die Installation gibt es das Tool esptool.py, das sich ebenso einfach installieren lässt.

$ sudo pip2 install esptool

Leider funktioniert esptool derzeit nur mit Python2.

Anschließend kann die vorhandene Firmware auf den ESP8266 zunächst gelöscht und mit dem zweiten Befehl die neue Firmware übertragen werden.

$ esptool.py --port /dev/ttyUSB0 erase_flash
$ esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash --flash_size=8m 0 esp8266-20160825-v1.8.3-49-ga589fa3.bin

Bei mir kam es bei Geschwindigkeiten über 115200 Baud zu Probleme, weshalb ich die Geschwindigkeit reduziert habe. Die Befehle habe ich der Anleitung von mircopython entnommen.

Nun kann mit einem Terminalprogramm auf den Microcontroller zugegriffen werden. Das geht mit Putty, minicom oder auch miniterm.py.

$ miniterm.py /dev/ttyUSB0 115200

Sollte miniterm.py noch nicht installiert sein, so kann es mit „pip install pyserial“ nachinstalliert werden.

Im Anschluss erhält man eine Python-Konsole, die man für eigene Projekte verwenden kann. Beim Start steht der ESP als Access Point zur Verfügung, auf den sich Clients mit dem Standardpasswort ‚micropythoN‘ verbinden können. Für den Dateitransfer kann dann das Kommandozeilentool webrepl_cli.py verwendet werden.

Anlagen

Buchtipp: „Little Brother“ von Cory Doctorow

cc: Richard Wilkinson

cc: Richard Wilkinson

In dem Roman „Little Brother“ erzählt Cory Doctorow die Geschichte der Geheimdienste nach den Anschlägen auf das World Trade Center in einem alternativen Amerika. Neben einer spannenden Geschichte für Jugendliche kommen auch Erwachsene auf ihre Kosten, wenn technische Details von Überwachungsmaßnahmen erläutert und die Gegenmaßnahmen mit Hilfe von Kryptographie vorgestellt und hinterfragt werden.

Das Buch und auch die deutsche Übersetzung sind unter einer freien Lizenz im Netz verfügbar. Für alle, die sich für die Erklärungen technischer Konzepte interessieren, habe ich die relevanten Passagen an dieser Stelle zusammengefasst.

Weiterlesen

Einen eigenen Webserver programmieren

browser
Wie funktioniert eigentlich ein Webserver? Ich habe eine ungefähre Vorstellung davon, was mein Browser macht, wenn ich eine Webseite aufrufe. Aber die genauen Details blieben mir bisher immer verborgen. Ich wollte es daher genauer wissen und habe selbst eine Webserver programmiert. Das ist gar nicht so schwer und jeder kann es selbst ausprobieren.
Weiterlesen

„Hallo Welt“ HP 35s

(cc) Stefan Vorkoetter

(cc) Stefan Vorkoetter

Über den HP35s habe ich bereits berichtet. Nun folgt das obligatorische Hallo-Welt-Programm. Der Rechner kann nämlich auch beliebigen Text anzeigen. Dies geschieht über das Flag 10. Ist es gesetzt, werden Gleichungen nur angezeigt, aber nicht ausgewertet. Das können wir für ein einfaches „Hallo-Welt“-Programm nutzen.

 A001  LBL A
 A002  SF 10  Setzt Flag 10
 A003  HALLO  Eingabe mit der EQN-Taste
 A004  PSE    Nach einer Sekunde wird das Programm fortgesetzt
 A005  WELT
 A006  PSE
 A007  CF 10  Löscht Flag 10
 A008  RTN