digitalRead immer HIGH und LOW

Guten Abend,
ich habe ein Arduino Mega2560, und baue gerade einen CNC 2D-Drucker.
Aber ich habe jetzt ein lustiges Problem…
Zum testen habe ich ein simplen Code geschrieben, welcher trotzdem nicht funktioniert…

void setup(){
    Serial.begin(9600);
    pinMode(11, INPUT);
}

void loop(){
    if (digitalRead(11) == HIGH && digitalRead(11) == LOW){
        Serial.println("WTF");
    }
}

Bei mir wird immer “WTF” ausgegeben, aber es kann ja nie HIGH und LOW gleichzeitig sein!
In den Pin11 habe ich nur ein offenes Kabel angeschlossen und mein Multimeter zeigt, dass es dort trotz INPUT 3,3V aussendet.

hat jemand eine Idee woran es liegen könnte?

MFG
Haoning

Ja, der offene Eingang ohne Pullup empfängt Störungen und somit hat er Eingang keinen definiert Wert. Damit wird der Ausgang nicht sauber gesetzt. Und das Multimeter zeigt auch nur ungenau an.

Ach ja. Stimmt. Ich muss da Ein Pullup Resistor einbauen. Danke :)

Haoning: Ach ja. Stimmt. Ich muss da Ein Pullup Resistor einbauen. Danke :)

Nicht unbedingt, du kannst auch "pinMode(11, INPUT_PULLUP)" setzen.

 if (digitalRead(11) == HIGH && digitalRead(11) == LOW){
        Serial.println("WTF");
    }

Der Eingang kann seh wohl LOW und HIGH sein, aber nicht gleichzeitig sondern nacheinander. Dies ist möglich weil Du 2 mal den Eingang einliest. Ein Eingang ohne Pullup oder Pulldown-Widerstand liest stöhrungen und da kann es durchaus sein daß alle 100 mal ein Wechsel zwishcen den beiden Lesefunktionen auftritt.

Grüße Uwe