Arduino Output = Gegenteil?
Hallo,
Ich schreibe gerade ein Arduino Programm.
Jetzt will ich es so machen: wenn etwas passiert soll der Wert eines digitalen Outputs das Gegenteil des vorherigen Werts sein also aus Low wird High und aus High wird Low.
Kann ich das irgendwie mit einem einzigen Befehl machen oder muss ich das umständlich mit einem bool machen ?
Danke im voraus :D
4 Antworten
Du kannst es entweder so machen
digitalWrite(pin, digitalRead(pin) == HIGH ? LOW : HIGH);
oder weil HIGH als 1 definiert ist und LOW als 0 geht auch
digitalWrite(pin, !digitalRead(pin));
Zweitere Variante ist zwar kürzer aber eben darauf angewiesen, dass HIGH LOW immer so definiert bleiben. Logisch gesehen wird sich das zwar nicht ändern, aber man sollte es sich nicht angewöhnen, dass man davon ausgeht, dass solche Macros oder Enums immer die selben Werte haben werden. Die erste Lösung wäre somit sauberer wenn du einen 1 Zeiler willst.
Ansonsten geht natürlich auch
if(digitalRead(pin) == HIGH)
{
digitalWrite(pin,LOW);
}
else
{
digitalWrite(pin, HIGH);
}
Wobei das eventuell schöner lesbar ist.
Nimm eine IF Else Funktion
wert = analogRead(pin)
If wert == HIGH
neuerwert = LOW
Else
neuerwert = HIGH
Mit einer if abfrage.
Du fragst ab ob der output auf high ist und setzt ihn dann auf low. Wenn der output auf low ist setzt du ihn auf high
Ich bin mir nicht mehr ganz sicher aber man könnte probieren:
digitalWrite(<Pin>, !digitalRead(<Pin>));