Beim Arduino gibt es eigentlich keine analogen Ausgänge. Im Letzen Teil habt ihr gelernt dass "digital" 2 nur zwei Zustände kennt (HIGH & LOW) und analog ganz viele Zustände kennt. Beim Arduino gibt es nur digitale Ausgänge. Mit einem kleinen Trick könnt ihr die digitalen Ausgänge aber zu analogen Ausgängen machen. Stell dir vor du bist daheim und stehst in deinem Zimmer am Lichtschalter, was ist das für ein Schalter, ANALOG oder DIGITAL? Richtig digital, er kennt AN und AUS. Wenn du den Lichtschalter aber jetzt ganz schnell an und aus machest, was passiert dann? Das Licht wird dunkler je schneller du an und aus machst desto heller wird es und je langsamer du drückst desto dunkler wird es. Versuche das ganze doch mal mit einer Taschenlampe.
Genau das gleiche macht der Arduino mit seinen digitalen Ausgängen, sie werden so schnell ein und ausgeschaltet das die LED heller oder dunkler wird. Das nennt man dann PWM (Pulsweitenmodulation) Puls --> für das pulsen, also das ein und ausschalten und Modulation --> für das modulieren, also das einstellen oder regeln des ein und ausschalten. Natürlich kann man die Helligkeit einer LED auch über einen Widerstand oder das eingebaut Potenziometer einstellen aber dazu müsst ihr immer in die Hardware des Arduino eingreifen. mit der PWM Methode kann man das bequem über die Software machen.
Nicht alle Ausgangs-PINs des Arduino können als PWM PINs verwendet werden. Nur die PINS die diese ~ "Welle" vor der PIN Nummer haben können verwendet werden. Beim Arduino UNO sind dies die PINS 3,5,6,9,10 und 11.
Jetzt wollen wir das ganze aber in die Tat umsetzen. Dazu steckt ihr ihre eure LED wieder an PIN D5 und da D5 eine ~ Welle hat, können wir diesen als PWM PIN verwenden. Dreht den POTI auf der Platine auf ganz hell und starte dann die Arduino IDE und Ardublock.
! Solange die GROVE LED mit der Platine verwendet wird, kann der Wert auf 255 gestellt werden. Wird eine LED direkt an den Arduino angeschlossen (ohne Vorwiderstand) dann würde die LED kaputt gehen und eventuell auch der Arduino schaden nehmen. Wenn eine LED also direkt mit dem Arduino verwendet wird muss der Wert so "tief" sein dass die LED keinen Schaden nimmt.
Als erstes benötigt ihr nun einen "analogWrite" Block, das "Write" kennt ihr ja schon. Es beutetet dass der Arduino etwas an einem PIN machen soll. Als erste wählt ihr den PIN aus, in unserem Fall PIN 5. In den Block "Wert" tragt ihr nun ein wie Hell eure LED sein soll. Wenn es um die analogen Ausgänge geht, dann gilt nicht die Prozentrechnung von 0-100 sondern es geht immer von 0 (AUS) bis 255 (AN) alles dazwischen ist gedimmt. Probiert es doch einfach mal aus. Tragt verschiedene Werte in das rote Feld ein und ladet das Programm auf den Arduino.
Nun könnt ihr mit der Software die Helligkeit der LED bestimmen. Das ganze muss aber nicht immer ein fester Wert sein. Deshalb wollen wir heute noch zwei andere Blöcke anschauen. Die Variablen Blöcke und die rechnen Blöcke. Beginnen wir mit den Variablen.
Variablen sind kurz gesagt Speicher in die etwas abgelegt werden kann. Eine Variable ist wie ein Spickzettel auf dem sich das Programm etwas merkt. Es gibt analoge Variablen und digitale Variablen, der Unterschied dürfte klar sein. In einer digitalen Variable könnt ihr nur "WAHR und FALSCH" speichern und in einer analogen Variable könnt ihr Werte (Zahlen) zwischen +32767 und -32767 speichern.
Bevor es mit den Variablen los geht müssen wir noch etwas über den Arduino wissen. Ich habe euch ja gesagt dass das Programm des Arduino immer von oben nach unten "durchläuft" solange er Strom hat. Das ist nicht ganz richtig. Es gibt im Programm einen "Setup" und einen "Loop" Teil.
Ladet das Programm unten auf euren Arduino, öffnet den Serial Monitor und macht den Hacken bei "Autoscroll" raus. Dann seht ihr dass der Text "start" einmal im Serial Monitor steht und der Text "immer" wiederholt wird. Alle Blöcke die im "Setup" sind werden immer nach dem Start EINMAL ausgeführt, alle Blöcke die im "Loop" Teil sind werden SO LANGE ausgeführt wie der Arduino Spannung hat.
Der "Setup" Teil ist gerade bei Variablen wichtig. Da hier bestimmt werden kann, welchen Werte (Zahl) eine Variable zu beginn des Programms haben soll.
Da ein analoger Ausgang einen Wert von 0-255 haben kann brauchen wir also eine analoge Variable. In dieser Variablen könnt ihr den Wert den die LED haben soll einfach speichern. Setzt den Ardublock Code wie unten im Bild zusammen. Achtet darauf dass die erste Variable im "Setup" Teil ist. Hier wird in der Variablen "LED DIMMER" der Wert 255 gespeichert.
Der Name einer Variablen ist übrigens egal, den dürft ihr frei bestimmen. Nun lernt ihr heute noch einen Block kennen den "rechnen" Block. Wenn eine Zahl in einer Variablen gespeichert ist dann könnt ihr damit auch rechnen. Setze bei "Wert" den "mat. Operator" minus (ein). Nun wird von der Variablen bei jedem Durchgang von der Variablen "LED DIMMER" eine 1 abgezogen. Das würde dann so aussehen.
- Wert von LED DIMMER ist 255, ziehe davon 1 ab = 254
- Nächster Durchgang:
- Wert von LED DIMMER ist 254, ziehe davon 1 ab = 253
- Nächster Durchgang:
- Wert von LED DIMMER ist 253, ziehe davon 1 ab = 252
- und so weiter:
Ladet euch nun das Programm unten auf euren Arduino. Eure LED müsste nun zu beginn ganz hell sein und langsam dunkler werden. Da der Arduino bis 32.767 auch in die negativen Zahlen zählen kann, leuchtet die LED nun ständig HELL und wird dann langsam dunkel. Der Wert (die Zahl)der in der Variablen gespeichert ist wird nun am analogen Ausgang des Arduino ausgegeben. Dazu "Rechtsklick" auf den Namen der Variablen und "KLONEN" und die Variable bei "Wert" am analogen Ausgang einfügen.
Das gleiche Programm könnt ihr auch von DUNKEL nach HELL programmieren. Dazu muss die Variable im "Setup" 0 sein und das Minus muss ein Plus werden. So jetzt könnt ihr eure LED dimmen also hell und dunkel machen. So dass die Variable von 0 bis 255 zählt.
Natürlich ist das keine tolle Sache weil die LED dann ja immer ganz hell oder ganz dunkel wird dann aufhört. Mit dem Block "Wiederhole male" kann man bestimmen wie oft gezählt wird. Der Teil in der Klammer wird also so oft wiederholt wie bei "mal" eingetragen wird. Da sich von 200 oder 220 bis 255 die Helligkeit nicht mehr groß ändert, reicht es wenn ihr 200 mal wiederholt. Ladet den Code unten auf euren Arduino.
Am Anfang ist die LED aus weil die Variable im "Setup" auf 0 gesetzt ist. Danach zählt die Variable 200 mal +1, danach ist der erste "wiederhole" Block abgearbeitet und die Variable im zweiten "wiederhole" Block wird abgearbeitet. 200 mal -1 und ist damit wieder auf 0.
Wem das ganze nun zu abstrakt ist der kann einfach zwei mal den Block Serial Monitor einfügen und über einen verbinde Block sich die Variable "LED DIMMER" anzeigen lassen. Im Serial Monitor kann man nun schön sehen wie die Variable hoch und runter gezählt wird.
So, eure Aufgabe heute ist nicht ganz einfach. Versucht mit dem "teste" Block und zwei Tastern die LED heller und dunkler zu machen. Mit dem Taster an PIN 2 soll die LED heller werden und mit dem Taster an PIN 3 soll die LED dunkler werden. Einen Tipp geben ich euch noch dazu. Wenn ihr nur +1 und -1 macht dann dauert es ziemlich lange. Versucht hier mal andere Zahlen zu verwenden.