GPIO-Pins unter Scratch verwenden

Ein einfaches Pong-Spiel

Für dieses Projekt brauchen Sie ein Breadboard, drei 330-Ohm-Resistoren, je eine grüne und rote LED, einen Schalter und einige Kabel. Das Breadboard sorgt dafür, dass Ihnen das Löten erspart bleibt.

Um die Sache zu vereinfachen, verwenden wir als Grundlage ein bereits existierendes Spiel aus dem Beispiel-Fundus von Scratch. Sie öffnen das entsprechende Skript über File | Open | Examples | Games | Pong. Bevor Sie das Spiel für die Verwendung der GPIO-Pins modifizieren, werfen Sie erst einmal einen kurzen Blick auf die Skripts, welche die Sprites für Schläger (Abbildung 2) und Ball (Abbildung 3) steuern, damit Sie sehen, wie diese agieren.

Abbildung 2: Das Skript für das Schläger-Sprite im Scratch-Spiel Pong.
Abbildung 3: Das Skript für das Ball-Sprite im Scratch-Spiel Pong.

Das Schläger-Skript zeigt ein in Scratch sehr häufig verwendetes Konzept, das der Koordinaten. Die Bühne bemisst sich auf 480 Pixel Breite und 360 Pixel Höhe. Die interne Variable mouse x übergibt die x-Koordinate des Mauszeigers an den Schläger, sodass dieser sich stets an die entsprechende Stelle bewegt.

Den Löwenanteil der Arbeit übernehmen das Ball-Sprite und das zugehörige Skript. Beim Start über das Anklicken der grünen Flagge rechts oberhalb der Bühne setzt die erste Anweisung, go to x: y:, den Ball auf seine Ausgangsposition. Scratch-typisch merkt es sich dabei die letzte verwendete Position. Soll ein Sprite also jedes Mal an einer bestimmten Koordinate starten, müssen Sie den entsprechenden Wert zu Beginn explizit setzen.

GPIO-Anbindung

Der Aufdruck des RasPi-Boards identifiziert die GPIO-Pins als Gruppe P1. Diese besteht aus zwei Reihen zu je 13 Stiften, die – halten Sie das Board so, dass Sie das "P1" lesen können – von links nach rechts durchnummeriert sind. Ungerade Zahlen (1 bis 13) bezeichnen die untere Pin-Reihe, gerade (2 bis 26) die obere (Abbildung 4).

Abbildung 4: Die GPIO-Gruppe P1 umfasst zwei Reihen mit je 13 Stiften, wobei die Pins mit geradzahligen Nummern oben liegen, die mit ungeradzahligen unten. Die Nummerierung beginnt linkerhand, die Pins 2 und 1 liegen also ganz links, 26 und 13 ganz rechts.

Über die GPIO-Anbindung wollen wir nun erreichen, dass bei jedem Game Over eine rote LED aufleuchtet, bei jedem Ballkontakt des Schlägers dagegen eine grüne. Abbildung 5 zeigt die beiden dazu notwendigen Stromkreise auf dem Breadboard. Die rote LED ist mir Pin 12 verbunden, die grüne mit Pin 11. Den Pin 6 verbinden Sie mit auf dem Breadboard mit Erde. Für jede LED sorgen zwischengeschaltete Resistoren dafür, dass sie nicht durchbrennt.

Abbildung 5: Das Breadboard samt LEDs und Verkabelung. Die grüne LED steckt in Reihe 8 und ist mit dem GPIO-Pin 11 über ein Kabel nach J8 verbunden. Die rote LED in Reihe 24 hängt via J24 an Pin 12 des RasPi. Das ganz rechts unten am Breadboard angeschlossene Kabel erdet den Schaltkreis und hängt am GPIO-Pin 6.

Zum Ansteuern der LEDs benötigen Sie den Code-Block broadcast aus der Palette Control. Ziehen Sie den Block nach innen ins mittlere Feld des Scratch-Fensters, und lassen Sie ihn dort unten an der Schleife forever if touching paddle? einschnappen. Um den Broadcast zu verwenden, gilt es, noch eine Nachricht zu erstellen, indem Sie auf den nach unten weisenden Pfeil im Block klicken und new anwählen. In der nun erscheinenden Dialogbox geben Sie als Nachrichtenname pin11on ein und bestätigen mit OK.

Wenn Sie nun durch Anklicken der grünen Flagge ein Spielchen wagen und dabei mit dem Schläger den Ball treffen, dann leuchtet die grüne LED hoffentlich auf. Zwar geht sie nicht mehr aus, aber darum kümmern wir uns gleich. Unangenehmer ist, wenn sie gar nicht erst aufleuchtet: Dann ist Troubleshooting angesagt, einige Hinweise dazu liefert der Kasten "Kleine Widrigkeiten".

Kleine Widrigkeiten

Leuchtet die LED nicht auf, prüfen Sie als Erstes, ob alle Kabelverbindungen sitzen und der Schaltkreis auch geerdet ist. Testen Sie die LED, indem Sie sie versuchsweise mit Pin 1 statt mit Pin*11 verbinden. Leuchtet Sie auf und bleibt an, passt der Schaltkreis. Bleibt sie dunkel, drehen Sie die Diode auf dem Breadboard um 180 Grad: Sie hat ein längeres und ein kürzeres Bein, das kurze muss geerdet sein.

ScratchGPIO2 bringt zum Debugging das Skript blink11.py mit, das Sie unter /home/pi/blink11.py finden. Wechseln Sie also dorthin, und rufen Sie das Skript mit sudo python blink11.py auf. Stimmt alles, sollte die LED nun blinken.

Als letzte Fehlerquelle kommt noch der Aufruf im Programm infrage: Prüfen Sie hier, dass die Broadcast-Nachricht auch wirklich pin11on lautet – ohne Leerzeichen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

04/2019
TV & Multimedia

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Finger weg

    Ein Temperatursensor verrät, ob Sie einen Gegenstand gefahrlos berühren dürfen. Beim Messen brauchen Sie dabei noch nicht einmal Kontakt zum Objekt.

  • Aus einer Hand

    Um einen Mikrocontroller zu programmieren, genügt ein Raspberry Pi. Wir zeigen, was Sie dazu noch benötigen.

  • Im Gleichtakt

    Synchronisierte Live-Loops und selbst erstellte Funktionen helfen dabei, Sonic Pi wie ein Live-Instrument zu spielen.

  • Mach mal

    Das Ftduino-Modul schlägt die Brücke zu Fischertechnik und ermöglicht es unter anderem, einen Drei-Achsen-Roboter anzusteuern.

  • Eleganter Diener

    Jeden Morgen dieselben Handgriffe, um zu sehen, ob die S-Bahn fährt und wie das Wetter wird? Ein cleverer Infoscreen auf RasPi-Basis automatisiert den Vorgang.

  • Bienenflüsterer

    Bienenzüchter, die ihre Völker besser kennenlernen möchten, müssen die fleißigen Insekten nicht pausenlos stören. Mit einem Raspberry Pi und verschiedenen Sensoren überwachen sie Temperatur, Luftfeuchtigkeit und bald auch das Gewicht des Bienenstocks.

  • Beerige Musik

    Für echten Hi-Fi-Sound braucht es mehr als einen kleinen Bluetooth-Brüllwürfel. Mit Volumio und einem Raspberry Pi rüsten Sie Ihre klassische Hi-Fi-Anlage mit smarten Funktionen auf.

  • Ton ab!

    Auf den ersten Blick erscheint der RasPi zu schwachbrüstig für den Betrieb leistungshungriger DAW-Software. Doch der Schein trügt.

  • Himbeer-TV

    Der DVB TV µHAT rüstet den Raspberry Pi mit einem DVB-T/T2-Tuner auf. Die deutsche TV-Landschaft schränkt dessen Möglichkeiten allerdings ein.

  • Git à la RasPi

    Mit wenigen Handgriffen zum Git-Hoster: Die dezentrale Arbeitsweise von Git erleichtert in Kombination mit der Netzwerkfähigkeit des RasPi das Verwalten von Quellcode.