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

12/2018
Coole Projekte

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Bytes und Beats

    In Sonic Pi können Sie mit wenigen Codezeilen Klänge manipulieren, Beats zusammenstellen und ganze Songs komponieren.

  • Klein, aber fein

  • Trick or treat

    Das traditionelle RPG-Gruselkabinett glänzt dieses Jahr mit einer innovativen Umsetzung mittels Pneumatik und Elektropneumatik sowie ST-Programmierung.

  • Unter Kontrolle

    Traditionell stellen wir alljährlich ein selbst gebautes Halloween-Gespenst vor. Die pneumatischen und elektronischen Grundlagen erklärt dieser Artikel.

  • Go Pi Go!

    Der Bausatz GoPiGo3 liefert Bauteile und Software für ein kleines Roboterauto. Zusammen mit einem RasPi als Gehirn programmieren Sie den Roboter per Mausklick.

  • Handlicher Helfer

    Während die Folien der Präsentation durchlaufen, liefert ein kleiner Dokumentenserver auf Basis des GL-AR300M-ext zusätzliche Informationen aus.

  • Wiederverwertet

    Mithilfe eines einfachen Python-Programms recyceln Sie ein ausgedientes Smartphone als drahtlos angebundenes RasPi-Display.

  • Herzenssache

    Steigt beim Krimi der Herzschlag bedrohlich an? Mit einem Pulsmesser in Eigenbau ermitteln Sie einfach und kostengünstig, ob der Herzschlag noch in verträglichen Bereichen liegt.

  • Fernbedient

    Mit der Fernbedienung den RasPi steuern. In der Theorie möglich, in der Praxis oft beschwerlich. Die Libcec liefert praktische Tools zur Fehlersuche.

  • Musikwürfel

    Mit Musikcube machen Sie Ihre eigene Sammlung fit fürs Streamen. Der terminalbasierte Audioplayer lässt sich Fernsteuern und bietet eine App für Android-Smartphones.