Arduino Output = Gegenteil?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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>));