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

02/2018
Digital Signage

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Neues auf der Heft-DVD

    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial des Raspberry Pi. Mit der Heft-DVD erhalten Sie nicht nur die neusten Distributionen für den RasPi und Co., sondern gleichzeitig auch die passenden Programme zu den Artikeln.

  • Ferngebootet

    Das Booten über das Netzwerk beherrscht auch der RasPi 3 – und bietet damit sehr viel mehr Flexibilität, als Sie mit SD-Cards erzielen können.

  • Bleibende Werte

    Ein EEPROM dient dazu, Daten auch nach Abschalten der Energiezufuhr zu speichern, etwa als Kanalspeicher in Autoradios. Wir zeigen, wie Sie einen solchen Speicher beschreiben und wieder auslesen.

  • Auf Wolke 1

    Mit einem schnellen Netzwerkanschluss und einer SATA-Schnittstelle dient sich der Odroid HC1 als NAS-Alternative an – allerdings nicht für jedermann.

  • Wohnungsfunker

    Der kompakte Router GL.iNet dockt problemlos am Raspberry Pi an und erweitert diesen um einen Access Point samt Server-Funktion.

  • Satter Sound

    Mit zwei ICs am I2S-Bus und ein paar zusätzlichen Bauteilen erweitern Sie den Raspberry Pi um eine Soundkarte, die keine Kontaktmöglichkeit mit gängigem HiFi-Equipment scheut – von Klinke und RCA bis IEC60958, Koax-S/PDIF oder optischem TOSLINK.

  • Wer klopfet an?

    Wechselsprechanlagen mit Bild- und Tonübertragung gibt es zwar von der Stange, allerdings zu gesalzenen Preisen. Günstiger und obendrein flexibler ist ein Eigenbau mit Pi Zero und RasPi 3.

  • Wiedergeburt

    Mit dem Keyrah-Tastaturadapter und einem Raspberry Pi machen Sie aus einem defekten C64 eine optimale Emulator-Station, bei der Sie die originale Tastatur und die Joystick-Ports nutzen.

  • Kleine Nachtmusik

    Waveform8 beseitigt einige Ecken und Kanten des Vorgängers Tracktion – und macht die DAW endgültig fit für den Einsatz auf dem Raspberry Pi.

  • Recycling

    Mit einer Dockingstation lassen sich ausgemusterte IDE/SATA-Festplatten im 2,5- und 3,5-Zoll-Format am Raspberry Pi betreiben. Mit dem Samba-Server gliedern Sie den Mini-Rechner dann als Datenspeicher in Ihr lokales Netzwerk ein.