Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Know-how<br />
Scratch-Programmierung<br />
8 Das Breadboard mit den zusätzlichen Taster auf Reihe 15. Die Verbindung in der untersten<br />
Reihe führt über <strong>Pi</strong>n 6 gegen Erde.<br />
TIPP<br />
Von Scratch aus können Sie über broadcast-Nachrichten<br />
die GPIO-<strong>Pi</strong>ns 11, 12, 13,<br />
15, 16 und 18 aktivieren. Über sensor value<br />
lassen sich außerdem die <strong>Pi</strong>ns 3, 5, 7,<br />
8, 10, 19, 21 bis 24 sowie 26 auslesen.<br />
<strong>Pi</strong>n 6 (GND) bleibt außen vor.<br />
Kleine Widrigkeiten<br />
Leuchtet die LED nicht auf, prüfen Sie als<br />
Erstes, ob alle Kabelverbindungen sitzen<br />
und der Schaltkreis geerdet ist. Testen Sie<br />
die LED, indem Sie sie versuchsweise mit<br />
<strong>Pi</strong>n 1 statt mit <strong>Pi</strong>n*11 verbinden. Leuchtet<br />
Sie auf und bleibt an, passt der Schaltkreis.<br />
Bleibt sie dunkel, drehen Sie die Diode<br />
auf dem Breadboard um 180 Grad:<br />
Sie hat ein längeres und ein kürzeres Bein,<br />
das kurze muss geerdet sein.<br />
an der Schleife forever if touching<br />
paddle? einschnappen. Um den Broadcast<br />
zu verwenden, gilt es, noch eine<br />
Nachricht zu erstellen, indem Sie auf den<br />
nach unten weisenden Pfeil im Block klicken<br />
und new anwählen. In der nun erscheinenden<br />
Dialogbox geben Sie als<br />
Nachrichtenname pin11on ein und bestätigen<br />
mit OK.<br />
Wenn Sie nun durch Anklicken der<br />
grünen Flagge ein Spielchen wagen und<br />
dabei mit dem Schläger den Ball treffen,<br />
dann leuchtet die grüne LED hoffentlich<br />
auf. Zwar geht sie nicht mehr aus, aber<br />
darum kümmern wir uns gleich. Unangenehmer<br />
ist, wenn sie gar nicht erst<br />
aufleuchtet: Dann ist Troubleshooting<br />
angesagt, einige Hinweise dazu liefert<br />
der Kasten Kleine Widrigkeiten.<br />
ScratchGPIO2 bringt zum Debugging das<br />
Skript blink11.py mit, das Sie unter<br />
/ home/pi/blink11.py finden. Wechseln<br />
Sie also dorthin, und rufen Sie das Skript<br />
mit sudo python blink11.py auf.<br />
Blinkt die LED, stimmt alles.<br />
Als letzte Fehlerquelle kommt der Aufruf<br />
im Programm infrage: Prüfen Sie hier, dass<br />
die Broadcast-Nachricht wirklich pin11on<br />
lautet – ohne Leerzeichen.<br />
Nun ändern Sie das Skript so ab, dass die<br />
LED blinkt, statt hell zu bleiben. Dazu<br />
ziehen Sie einen wait-Block ins Skript,<br />
gefolgt von einem zweiten broadcast-<br />
Block mit der Nachricht pin11off. Den<br />
entsprechend modifizierten Code zeigt<br />
Abbildung 6 . Durch Ändern des Werts<br />
im wait-Block beeinflussen Sie, wie lange<br />
die grüne LED an bleibt. Jetzt geht es daran,<br />
die rote LED zu aktivieren, sobald<br />
der Schläger den Ball verfehlt. Dazu fügen<br />
Sie im ersten Skript für den Ball einen<br />
broadcast-Block mit der Nachricht<br />
pin12on nach wait until ein 7 .<br />
Wie Sie in Abbildung 6 und 7 erkennen,<br />
haben wir jeweils einen weiteren<br />
broadcast-Block eingefügt, der direkt<br />
nach dem Anklicken der grünen Start-<br />
Flagge über die Nachricht pinalloff alle<br />
<strong>Pi</strong>ns ausschaltet. Das stellt sicher, dass zu<br />
Beginn alle LEDs dunkel sind.<br />
Broadcasts in Scratch<br />
Die broadcast-Blocks dienen in Scratch<br />
dazu, Ereignisse zwischen verschiedenen<br />
Sprites oder, wie im vorigen Beispiel,<br />
zwischen einem Sprite und der<br />
GPIO-Schnittstelle des <strong>Raspberry</strong> <strong>Pi</strong> zu<br />
synchronisieren. Dabei unterscheidet<br />
sich der Ablauf eines GPIO-broadcast ein<br />
wenig von der normalen Behandlung<br />
solcher Nachrichten durch Sprites.<br />
In ScratchGPIO2 arbeitet das unter<br />
/ home/pi/cymplecy_scratch_handler/<br />
abgelegte Skript scratch_gpio2_handler.py<br />
alle Nachrichten des Formats pin-<br />
Nummeron und pinNummeroff ab, wobei<br />
es „Nummer“ als GPIO-<strong>Pi</strong>n-Nummer<br />
interpretiert. Um alle <strong>Pi</strong>ns gleichzeitig<br />
anzusprechen, verwenden Sie pinalloff<br />
und pinallon. Ersteres entspricht einer<br />
anliegenden Spannung von 3,3 Volt,<br />
Letzteres 0 Volt.<br />
In einem typischen Scratch-Programm<br />
kümmern sich Sprites nur dann um<br />
Nachrichten, wenn Sie sie dazu über einen<br />
Kontrollblock des Typs when I receive<br />
explizit anweisen. Es können mehrere<br />
Sprites auf eine Nachricht reagieren, wobei<br />
sich die jeweilige Reaktion über den<br />
when-I-receive-Block individuell konfigurieren<br />
lässt. Ohne einen solchen Block<br />
ignoriert das Sprite die Nachricht.<br />
78 www.raspberry-pi-geek.de<br />
06.2013