Ich bin neu in Forum und beschäftige mich seit zwei Wochen mit einem Arduino Uno und mein Hauptaugenmerk liegt bei DMX (DmxSimple). Ich habe eine Frage, die mir fast peinlich zu stellen ist:
ich habe Probleme mit einer if-else-Abfrage. Und zwar sollen durch einen Taster, die DMX-Kanäle (Farben) umgeschaltet werden.
Wenn ich den Sketch hochlade, leuchtet der Spot blau. Alles ok.
Wenn ich den Sketch bei gedrückten Taster hochlade, leuchtet der Spot rot. Alles ok.
Aber wenn ich dann den Taster loslasse oder drücke, leuchtet der Spot violett! Die if-else-Anweisung schaltet nicht, sondern durchläuf das if und das else gleichermaßen! Der Serial Monitor gibt aber den richtigen Tasterstatus zurück.
Wenn ich das ganze mit Variablen regel (statt Taster), die ich über den Serial Monitor eingebe, ist es genau das gleiche. Die Variablen sind bei der Initialisierung auf 1 aber 2 gesetzt: blau oder rot - alles ok! Schalte ich aber über den Serial Monitor um: violett. Es scheint also an der if-else-Abfrage zu liegen.
Der Einfachheit halber, habe ich eine Beispieldatei genommen, und nur zwei Zeilen dazu geschrieben.
Mit googlen und mit alten Forumbeträgen, scheine ich nicht weiterzukommen.
Für Antworten wäre ich dankbar!
`#include <DmxSimple.h>
const int buttonPin = 4;
const int ledPin = 8;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
DmxSimple.write(1, 50); // von mir dazugeschrieben, ROT, brightness 50
} else {
digitalWrite(ledPin, LOW);
DmxSimple.write(3, 50); // von mir dazugeschrieben, BLAU, brightness 50
}
}
`