Calliope mini - Spaß durch Programmieren

Ein- und Ausschaltverzögerung

Ausschaltverzögerung

Ziel: Es ist für das Auge angenehm, wenn eine Lampe nach dem Einschalten nicht sofort hell leuchetet und nach dem Ausschalten nicht sofort aus ist. Es soll ein bistabiler Schalter programmiert werden, der das Ein- und Ausschalten verzögert.

Ausschaltverzögerung

Beim Ausschalten wird die Helligkeit der LED vom Startwert an (255) runtergezählt. Die Verzögerung wird über den Zeitgeber gesteuert. Erhöht man den Wert der Variablen dauer, dauert das Ausschalten länger.

Einschaltverzögerung

Im nächsten Schritt werden nach dem Drücken von Knopf A die LEDs verzögert heller. Dazu wird eine neue Variable ziel_helligkeit erzeugt, die mit einem Klick auf den Knopf A auf 255 gesetzt wird.

In der dauerhaft-Schhleife wird zuerst geprüft, ob die Zeit, die in dauer steht, abgelaufen ist. Ist das der Fall, wird geprüft, ob die helligkeit der LEDs kleiner ist als die eben festgelegt ziel_helligkeit. Ist das der Fall, wird die Helligkeit um eins erhöht und die LEDs mit diesem neuen Wert angesteuert.

Damit die LEDs mit der Taste B langsam ausgehen, muss über diese Taste die ziel_helligkeit auf 0 gesetzt werden. Schon geht das auch.

Ein- und Ausschalten mit einer Taste

Häufig stellt man fest, dass das Programm nicht perfekt läuft. Hier ist es genau so. Mängel sind

  • Wenn die LEDs angehen, kann mit der Taste B der Vorgang angehalten werden und die LEDs gehen wieder aus
  • Es gibt keinen eindeutigen Programmablauf, wenn beide Tasten gleichzeitig gedrückt werden.
  • Es sind zum An- und Ausmachen zwei Tasten notwendig.

Alle diese Probleme lassen sich mit mit wenigen Programmzeilen lösen:

  • Knopf A wird nur dann abgefragt, wenn die helligkeit 0 oder 255 ist. Das heißt, Knopf A reagiert nur dann, wenn die LEDs ganz an sind oder richtig aus.
  • Wird der Knopf A gedrückt, entscheidet der Wert der helligkeit, auf welchen Wert die neue ziel_helligkeit gesetzt wird.
  • Das An- und Ausmachen wird nur noch über eine Taste realisiert.

Reduziert man den Wert von dauer und ändert die Helligkeit je Aufruf nicht um 1, sondern z.B. um 5, erhält man eine Lampe, die augenfreundlich an- und ausgeht.

Zu Beginn des Programms müssen die Neopixel und alle Variablen initialisiert werden. In der unendlichen Schleife wird beim Drücken von A die Helligkeit auf 255 gesetzt, die LEDs strahlen hell.

Wird A losgelassen, wird die Helligkeit im 20ms-Takt bis auf den Wert 0 verkleinert und sofort angezeigt.

Der Wartebefelh sleep() wird bewusst nicht verwendet, weil der Calliope mini während dieses Effektes sich eventuell auch noch um andere Sachen kümmern muss und nicht schlafen soll.

Falls der Effekt schneller oder langsamer ablaufen soll, muss die Variable dauer verändert werden.

Einschaltverzögerung

Aufgabe: Erweitere das Programm, so dass beim Einschalten die LED ebenfalls allmählich angeht. Dabei sollte die Einschaltzeit kürzer als die Ausschaltzeit sein.

zurück

Impressum/ Kontakt Datenschutzerklärung Creative Commons Lizenzvertrag