Calliope mini - Spaß durch Programmieren

Entwicklungsumgebungen

CountDown (1)

Ziel: Die 25 roten LED des Bildschirmes gehen nacheinander in einer bestimmten Zeit aus. Während des Ausgehens leuchtet die RGB-LED rot auf, danach grün.

Im Video beträgt die CountDown-Zeit 15 Sekunden.

Einzelne LEDs einschalten

Mit diesem Befehl lässt sich eine LED mit den Koordinaten x und y mit einer bestimmten Helligkeit einschalten.

  • x: Position in x-Richtung nach rechts von 0 bis 4
  • y: Position in y-Richtung nach unten von 0 bis 4
  • Helligkeit: Helligkeit der LED von 0 (aus) bis 9 (hell).

Aufgabe: Setzt 5 Anweisungen untereinander, so dass die mittlere, waagerechte LED-Leiste von links nach rechts in den Helligkeiten 1, 3, 5, 7 und 9 aufleuchtet.

Setze danach die Anweisungen in eine unendliche Schleife, baue zwischen den Anweisungen Wartezeiten von 0,5 s ein und lösche am Ende den Bildschirm.

Calliope mini-LED-Block
Calliope mini-LED-Block

LEDs mit einer Zählschleife einschalten

Um 25 LED anzusteuern, wären dann 25 einzelne Befehle notwendig. Das geht viel einfacher.

Im Folgenden wird ein Programm beschrieben, dass die 5 LED der mittleren Reihe in aufsteigender Helligkeit nacheinander einschaltet, dann den Bildschirm löscht und die LED wieder aufleuchten lässt.

Aufgabe: Setze die Programmbeschreibung in ein lauffähiges Programm um.

Programmbeschreibung

Zu Beginn werden zwei Variablen erzeugt:
Name Typ Startwert
spalte Zahl 0
helligkeit Zahl 1

Das gesamte Programm läuft in einer unendlichen Schleife.

In einer Schleife, die 5-mal wiederholt wird, setzt man zuerst die LED mit der x-Koordinate spalte und der y-Koordinate 2 auf die Helligkeit helligkeit.
Danach wird der Inhalt der Variablen spalte um 1 und der Inhalt der Variablen helligkeit um 2 erhöht.
Es folgt am Ende der 5-fach-Schleife eine Wartezeit von einer halben Sekunde.

Nach dem Ende der 5-fach-Schleife wird

  1. die Variable spalte auf 0 gesetzt
  2. die Variable helligkeit auf 1 gesetzt
  3. der Bildschirm gelöscht
  4. eine halbe Sekunde gewartet

Achtung: Es kann sein, dass das Programm ein Mal gut läuft. Danach wird der Bildschirm wieder eingeschaltet, aber die LEDs werden nicht gelöscht. Untersuche im Debug-Modus das Verhalten der Variablen und ändere das Programm.

count_down

Wenn das beschriebene Programm richtig eingegeben wurde, läuft der Calliope mini wie in dem Video.

Aufgabe: Ändere das Programm so, dass die erste Zeile nacheinander einschaltet.

Aufgabe: Ändere das Programm so, dass die mittlere Spalte nacheinander einschaltet.

Eine Zeile ausschalten

Aufgabe: Es soll nun im voll beleuchteten Bildschirm eine Zeile gelöscht werden. Dazu ist der Bildschirm vor der 5-fach-Schleife komplett einzuschalten und die Helligkeit beim Setzen der LED auf 0 zu stellen.
Beachte: Da die Helligkeit jetzt immer 0 ist, kann die Variable helligkeit entfernt werden.

Zwei verschachtelte Zählschleifen

Im nächsten Schritt wird jede Zeile einzeln gelöscht. Die Zeile ist die y-Koordinate.

  1. Es wird eine neue Variable zeile erzeugt. Sie ist vom Typ Zahl und erhält den Startwert 0.
  2. Die neue Variable wird im Block Setze LED am y-Wert angedockt.
  3. Um die 5-fach-Schleife wird eine weitere 5-fach-Schleife gelegt!
  4. Die neue Schleife umschließt jetzt die zu Beginn geschriebene 5-fach-Schleife. NACH dieser inneren Schleife wird
    • die Variable zeile um 1 erhöht
    • die Variable spalte wieder auf 0 zurückgesetzt.
  5. Teste das fertige Programm.

Hinweis: Du wirst merken, dass das Programm ein Mal gut läuft. Danach wird der Bildschirm wieder eingeschaltet, aber die LEDs werden nicht gelöscht. Untersuche im Debug-Modus das Verhalten der Variablen und ändere das Programm.

Calliope mini-Verschachtelte Schleifen

Einzelne LEDs einschalten

Mit diesem Befehl lässt sich eine LED mit den Koordinaten x und y mit einer bestimmten Helligkeit einschalten.

  • x: Position in x-Richtung nach rechts von 0 bis 4
  • y: Position in y-Richtung nach unten von 0 bis 4
  • Helligkeit: Helligkeit der LED von 0 (aus) bis 255 (hell).

Aufgabe: Setzt 5 Anweisungen untereinander, so dass die mittlere, waagerechte LED-Leiste von links nach rechts in den Helligkeiten 51, 102, 153, 204 und 255 aufleuchtet.

Calliope mini-LED-Block
Calliope mini-LED-Block

LEDs mit einer Zählschleife einschalten

Um 25 LED anzusteuern, wären dann 25 einzelne Befehle notwendig. Das geht viel einfacher.

Im Folgenden wird ein Programm beschrieben, dass die 5 LED der mittleren Reihe in aufsteigender Helligkeit nacheinander einschaltet, dann den Bildschirm löscht und die LED wieder aufleuchten lässt.

Aufgabe: Setze die Programmbeschreibung in ein lauffähiges Programm um.

Programmbeschreibung

Zu Beginn werden zwei Variablen erzeugt:
Name Typ Startwert
spalte Zahl 0
helligkeit Zahl 51

Das gesamte Programm läuft in einer unendlichen Schleife.

In einer Schleife, die 5-mal wiederholt wird, setzt man zuerst die LED mit der x-Koordinate spalte und der y-Koordinate 2 auf die Helligkeit helligkeit.
Danach wird der Inhalt der Variablen spalte um 1 und der Inhalt der Variablen helligkeit um 51 erhöht. (255/5=51)
Es folgt am Ende der 5-fach-Schleife eine Wartezeit von einer halben Sekunde.

Nach dem Ende der 5-fach-Schleife wird

  1. die Variable spalte auf 0 gesetzt
  2. die Variable helligkeit auf 51 gesetzt
  3. der Bildschirm gelöscht
  4. eine halbe Sekunde gewartet
count_down

Wenn das beschriebene Programm richtig eingegeben wurde, läuft der Calliope mini wie in dem Video.

Aufgabe: Ändere das Programm so, dass die erste Zeile nacheinander einschaltet.

Aufgabe: Ändere das Programm so, dass die mittlere Spalte nacheinander einschaltet.

Eine Zeile ausschalten

Aufgabe: Es soll nun im voll beleuchteten Bildschirm eine Zeile gelöscht werden. Dazu ist der Bildschirm vor der 5-fach-Schleife komplett einzuschalten und die Helligkeit beim Setzen der LED auf 0 zu stellen.
Beachte: Da die Helligkeit jetzt immer 0 ist, kann die Variable helligkeit entfernt werden.

Zwei verschachtelte Zählschleifen

Im nächsten Schritt wird jede Zeile einzeln gelöscht. Die Zeile ist die y-Koordinate.

  1. Es wird eine neue Variable zeile erzeugt. Sie ist vom Typ Zahl und erhält den Startwert 0.
  2. Die neue Variable wird im Block Zeichne x... am y-Wert angedockt.
  3. Um die 5-fach-Schleife wird eine weitere 5-fach-Schleife gelegt!
  4. Die neue Schleife umschließt jetzt die zu Beginn geschriebene 5-fach-Schleife. NACH dieser inneren Schleife wird
    • die Variable zeile um 1 erhöht
    • die Variable spalte wieder auf 0 zurückgesetzt.
  5. Teste das fertige Programm.

Hinweis: Du wirst merken, dass das Programm ein Mal gut läuft. Danach wird der Bildschirm wieder eingeschaltet, aber die LEDs werden nicht gelöscht. Untersuche im Debug-Modus das Verhalten der Variablen und ändere das Programm.

Calliope mini-Verschachtelte Schleifen

Einzelne LEDs einschalten

Mit diesem Befehl lässt sich eine LED mit den Koordinaten x und y mit einer bestimmten Helligkeit einschalten. In der Klammer müssen drei Werte, getrennt durch ein Komma, stehen.

  • 1. Wert x: Position in x-Richtung nach rechts von 0 bis 4
  • 2. Wert y: Position in y-Richtung nach unten von 0 bis 4
  • 3. Wert Helligkeit: Helligkeit der LED von 0 (aus) bis 9 (hell).

Aufgabe: Setzt 5 Anweisungen untereinander, so dass die mittlere, waagerechte LED-Leiste von links nach rechts in den Helligkeiten 1, 3, 5, 7 und 9 aufleuchtet.

Calliope mini-LED-Block
Calliope mini-LED-Block

LEDs mit einer Zählschleife einschalten

Um 25 LED anzusteuern, wären dann 25 einzelne Befehle notwendig. Das geht viel einfacher.

Im Folgenden wird ein Programm beschrieben, dass die 5 LED der mittleren Reihe in aufsteigender Helligkeit nacheinander einschaltet, dann den Bildschirm löscht und die LED wieder aufleuchten lässt.

Programmbeschreibung

Zu Beginn werden drei Variablen erzeugt:
Name Typ Startwert
x Zahl 0
y Zahl 2
h Zahl 1

Das gesamte Programm läuft in einer unendlichen Schleife.

In einer Schleife, die 5-mal wiederholt wird, setzt man zuerst die LED mit der x-Koordinate x und der y-Koordinate y auf die Helligkeit h.
Danach wird der Inhalt der Variablen x um 1 und der Inhalt der Variablen h um 2 erhöht.
Es folgt am Ende der 5-fach-Schleife eine Wartezeit von einer halben Sekunde.

Nach dem Ende der 5-fach-Schleife wird

  1. die Variable x auf 0 gesetzt
  2. die Variable h auf 1 gesetzt
  3. der Bildschirm gelöscht
  4. eine halbe Sekunde gewartet

count_down
Das Python-Programm
count_down
Das Struktogramm dazu

Wenn das beschriebene Programm richtig eingegeben wurde, läuft der Calliope mini wie in dem Video.

Was verbirgt sich eigentlich hinter der Variable i? Um das herauszufinden, wird sie bei jedem Schleifendurchlauf angezeigt. Dazu werden drei Zeilen mit einem # auskommentiert und eine zusätzliche Zeile eingefügt. Die auskommentierten Zeilen werden vom Programm nicht mehr berücksichtigt.

Aufgabe: Ändere das Programm. Die Variable x wird gelöscht und durch das i ersetzt. Danach sollte es wieder laufen, ist aber kürzer.

count_down

Aufgabe: Ändere das Programm so, dass die erste Zeile nacheinander einschaltet.

Aufgabe: Ändere das Programm so, dass die mittlere Spalte nacheinander einschaltet.

Eine Zeile ausschalten

Aufgabe: Es soll nun im voll beleuchteten Bildschirm eine Zeile gelöscht werden. Dazu ist der Bildschirm vor der 5-fach-Schleife komplett einzuschalten und die Helligkeit beim Setzen der LED auf 0 zu stellen.

Programmteil zum Einschalten des Bildschirms

Beachte: Da die Helligkeit jetzt immer 0 ist, kann die Variable h entfernt werden.
Hinweis: Die Zeile zum Einschalten des Bildschirm kann auch verkürzt so geschrieben werden:

Zwei verschachtelte Zählschleifen

Im nächsten Schritt wird jede Zeile einzeln gelöscht. Die Zeile ist die i-Koordinate.

  1. Es wird eine weitere 5-fach-Schleife eingefügt.
  2. Die display.set_pixel-Anweisung wird so verändert, dass die Variable i und j die Koordinaten der entsprechenden LED darstellen.
  3. Teste das fertige Programm.

Aufgabe: Beim Erstellen des Struktogramms ist ein Fehler passiert. Eine Zeile ist unnötig. Das heißt, sie bewirkt nichts mehr und kann deshalb gelöscht werden. Finde den Fehler und korrigiere ihn in deinem Programm.

Wenn man alles Unnötige entfernt hat, ist das Programm noch ganze 8 Zeilen lang!

Calliope mini-Verschachtelte Schleifen

Start mit A und Zustand anzeigen

Start mit A: Eine einzige zusätzliche Zeile macht es möglich, dass erst nach dem Druck auf A der Bildschirm angezeigt wird und dann punktweise gelöscht wird. Danach wird wieder gewartet, bis A gedrückt wird.

Zustand anzeigen: Über die mittlere der drei LEDs soll der Zustand angezeigt werden. Läuft der CountDown, zeigt sie rot an, ansonsten ist sie grün.

Taste B schaltet die rechte LED

Am Ende des Programms kommt noch eine weitere kleine Erweiterung hinzu: Mit der Taste B soll einfach die rechte LED in blau ein- und ausgeschaltet werden. Das funktioniert auch ganz prima, wenn der CountDown nicht läuft.

count_down

Läuft aber der CountDown nach dem Drücken von A, reagiert B nicht mehr. Erst nachdem alle LEDs gelöscht sind, kann man die blaue LED wieder schalten.

Der Grund liegt in der Programmstruktur. Nach dem Starten der Schleifen mit A hängt der Calloiope mini darin fest und reagiert auf nichts anderes. Zu allem Übel schläft er während der Schleifendurchläufe die meiste Zeit (sleep(500)).

Damit ist eine solche Anzeige z.B. für Spiele völlig ungeeignet. Wie man es trotzdem schafft, einen CoutDown laufen zu lassen und auf alle Eingaben zu reagieren, wird in CountDown ohne Warten beschrieben.

zurück