26.02.2014 Aufrufe

Raspberry Pi Geek Tuning-Tipps - Overclocking, RAM-Sharing, I/O Optimierung (Vorschau)

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!