Hallo,
ich habe in einem Arduinobuch einen Beispielcode für einen Led-Dimmer entdeckt und versuche nun diesen Code zu verstehen. Die Hardwarekonfiguration lautet wie folgt:
2 Taster sind über Digitalpins an den Arduino angeschlossen und werden über die internen Pull up Widerstände auf High gezogen. Bei Tastendruck werde die Taster gegen Ground kurzgeschlossen, so dass der Pin zum Status Low wechselt.
Um die Taster gegeneinander zu verriegeln, wird in einer if else Schleife der Zustand beide Taster gedrückt mittels Boolescher Operatoren ausgeschlossen.
Hier ist der entsprechende Ausschnitt des Codes zur Ansicht:
void loop()
{
if(!digitalRead(SW1)&&digitalRead(SW2))
{
if(helligkeit<255)helligkeit++;
analogWrite(LED,helligkeit);
delay(10);
}
else if(digitalRead(SW1)&&!digitalRead(SW2))
{
if(helligkeit!=0)helligkeit--;
analogWrite(LED,helligkeit);
delay(10);
}
}
Den erste IF- Block verstehe ich folgerndermaßen:
Wenn Variable SW 1 nicht wahr und Variable SW 2 wahr, dann führe Anweisungsblock aus.
Anweisungsblock: Solange die Variable "Helligkeit" < 255 erhöhe den Wert der Variablen schrittweise um 1. Warte zwischen den Schritten 10mS.
Trifft die IF-Abfrage nicht zu, dann prüfe 2. IF-Block:
- IF-Block: Wenn Variable SW 1 wahr und Variable SW 2 nicht wahr, führe Anweisungsblock aus.
Anweisungsblock: Wenn Variable Helligkeit nicht gleich 0, verringere den Wert der Variablen schrittweise um 1. Warte zwischen den Schritten 10mS.
Somit wird die Led über SW 1 heller, wenn: Taster 1 gedrückt, Taster 2 nicht gedrückt und die Helligkeit kleiner dem PWM MAximum von 255 ist.
Die Led wird dunkler, wenn Taster 2 gedrückt, Taster 1 nicht gedrückt und die Helligkeit größer 0 ist.
Soweit habe ich den Ablauf ja verstanden, aber muss ich der Prüfschleife nicht auch sagen, auf was die Inhalte der Variablen geprüft werden sollen? Irgendwoher müssen die Booleschen Operatoren doch gesagt bekommen, was sie als wahr oder unwahr annehmen sollen?
Zur Quellenangabe: Der Code stammt aus dem Buch "Arduino - Microcontroller Programmieren mit Arduino/Freeduino" von Uli Sommer aus dem Franzis Verlag.
Sollte dies unter Gesichtspunkten des Copyrights ein Problem darstellen, den Code hier zu diskutieren, so bitte ich einen Moderator den Post zu löschen. Mir geht es keinesfalls darum das Copyright des Autors und Verlages zu verletzen, sondern ich blicke einfach nicht durch und benötige etwas Hilfe.
VG und besten Dank
Confused Electron