Mit dem analogen Lichtsensor könnt ihr einfach ein Nachtlicht bauen! Hier lernt ihr außerdem die Grundlagen, um Variablen zu benutzen.

Probiert es hier aus bitbloq.bq.com

Bitbloq 2 ist eine Programmiersprache, mit der ihr aus Blöcken einfache oder komplexe Programme für Arduino-kompatible Plattformen, wie den BQ ZUM erstellen könnt! Damit könnt ihr alle Fähigkeiten der C++ Sprache umsetzen, auf der Arduino basiert, ohne die komplizierte Syntax, Komma- und Klammerregeln der Sprache auswendig lernen zu müssen.

Mit Bitbloq 2 kann jeder ab 8 Jahren die Grundlagen der Programmierung und Robotik lernen!


 

Heute wollen wir uns ansehen, wie ihr richtige Sensoren in euer Programm integriert und es damit ein bisschen intelligenter macht – und zwar wollen wir ein Nachtlicht bauen, das automatisch angeht, sobald es im Zimmer dunkel wird. Als Sensor verwenden wir den Lichtsensor, den wir hier als Lichtabhängigen Widerstand haben. Das Prinzip ist das gleiche wie beim Taster: Je mehr Licht in den Lichtsensor fällt, desto geringer wird dessen Widerstand und desto weiter wird der Eingang am ZUM oder Arduino aufgeladen. Der Bereich dafür ist wieder von 0 bis 5V, aber anders als beim Taster, der nur 0 oder 5V und keine Werte dazwischen erzeugt hat, kann unser Microcontroller jetzt 1024 Werte vom Lichtsensor einlesen und damit ziemlich genau bestimmen, wie viel Licht in den Sensor fällt und nicht nur, ob überhaupt Licht ankommt. So ein Signal nennt sich analog.

Entsprechend müssen wir den Lichtsensor auch anders anschließen – die Pins 0 bis 13, die wir sonst verwendet haben können nämlich nur binäre Signale verarbeiten, also komplett an oder komplett aus. Die Pins A0 bis A5 können zusätzlich analoge Signale einlesen und haben deshalb auch eine blaue statt weiß-gelbe Markierung am Signalpin. Die blaue Leitung findet ihr auch an den Kabeln wieder, die analoge Signale von den Sensoren zum Zum Board führen. Auch in Bitbloq müssen wir jetzt natürlich den Lichtsensor an den analogen Pin verbinden, meinen habe ich an Pin A0 für analog, 0, angeschlossen. Die LED hänge ich wieder an den binären beziehungsweise digitalen Pin 7.

LED + Lichtsensor

Im Software-Bereich bauen wir jetzt wieder ein ähnliches Programm wie für den Taster auf, und zwar wieder im Loop mit dem Wenn-Block. Als ersten Teil des Vergleichs in der Bedingung lesen wir den Wert des Lichtsensors ein – je nach Lichtstärke liegt der Wert zwischen 0 und 1023. Als zweiten Teil des Vergleichs nehmen wir den Zahlen-Block aus dem Bereich Mathematik. Je nach Lichtsensor und der externen Verschaltung kann ein Wert von 200, also ungefähr ein Volt am Eingang, schon relativ helles Licht bedeuten. Bei anderen Sensoren liegt normale Zimmerbeleuchtung schon bei 800, also bei ungefähr vier Volt, je nach Einstellung des Sensors. Probiert also einfach aus, welche Werte für euch funktionieren. Was wir hier jetzt aber noch umstellen müssen, ist der Operand zwischen den beiden Werten. Wenn wir den auf “ist gleich” stehen lassen würden, würde unser Nachtlicht immer nur bei einer ganz bestimmten Helligkeit angehen, wir wollen aber, dass es immer dann angeht, wenn die Helligkeit unter einen bestimmten Wert fällt. Deshalb müssen wir hier auch den “kleiner als” Operand verwenden, damit wird der Inhalt des “Wenn” Blocks immer dann ausgeführt, wenn die Helligkeit unter den Wert fällt.

Wir brauchen natürlich auch noch den Block, um die LED einzuschalten, und den “im gegenteiligen Fall, ausführen” Block, damit die LED auch wieder ausgeschalten wird.

LED + Lichtsensor Software

Und das macht unser Programm jetzt: Wenn wir den Lichtsensor mit der Hand abdecken, erhöht sich der Widerstand des Lichtsensors, die Spannung am analogen Eingang fällt ab und unsere Bedingung in Bitbloq schaltet die LED an.

LED + Lichtsensor

Eine Sache möchte ich euch noch zeigen, und zwar Variablen. Das sind sozusagen kleine Container, in die ihr Werte speichern und immer wieder abrufen könnt. Variablen eignen sich auch hervorragend, um mit ihnen zu rechnen und die Ergebnisse zu speichern. Solange ihr die Variable nicht überschreibt, ändert sich ihr Wert nicht mehr. Was wir bei unserem Nachtlicht zum Beispiel damit machen können, ist statt direkt den lesen Block in der Bedingung zu verwenden, zuerst den  Wert in eine Variable zu schreiben und dann mit der Variable weiterzumachen. Das ist zum Beispiel dann praktisch, wenn sich der Wert vom Sensor ständig ändert, ihr aber ein paar Mal den exakt gleichen Wert braucht.

Ihr könnt mir dem “Variable bestimmen” Block eine neue Variable anlegen, die solange bestehen bleibt, bis der jeweilige Bereich des Programms abgearbeitet ist. Wenn wir z.B. am Anfang des Loops die Variable mit dem Namen “helligkeit” anlegen und ihr den Wert geben, den wir aus dem Lichtsensor lesen, können wir danach mit dieser Variable weiterarbeiten statt jedes Mal den Sensor neu auslesen zu müssen.

Variable Software

In der nächsten Lektion sehen wir uns an, wie ihr mit dem Zum oder Arduino mit einem Computer kommunizieren könnt. Bis dann!