digitalWrite(LED_YELLOW, state HIGH : LOW) was macht dieser Code?

Beitrag #6686976 wurde von einem Moderator gelöscht.
Beitrag #6687023 wurde von einem Moderator gelöscht.
Beitrag #6687029 wurde von einem Moderator gelöscht.
#6687049
Lesenswert?

Patrick C. schrieb:
> Ich nehme an du meinst "digitalWrite(LED_YELLOW, state ? HIGH : LOW);"

Das ist eine Tautologie.

https://de.wikipedia.org/wiki/Tautologie_(Logik)

Nicht nur, daß man den ternären Operator in normalen Code außerhalb von 
Macros eher meiden sollte, auch so ist es doppelt gemoppelt.

digitalWrite(LED_YELLOW, state);

Tut das Gleiche, allerdings deutlich einfacher lesbar ;-)
Beitrag #6687062 wurde von einem Moderator gelöscht.
Gast #6687070
Lesenswert?

Falk B. schrieb:
> digitalWrite(LED_YELLOW, state);
> Tut das Gleiche, allerdings deutlich einfacher lesbar ;-)

Snoop schrieb:
> Aber doch nur, wenn State auch ein Bool ist, oder?
> Bei nem Integer würde er versuchen einen Int Wert in
> das Register des LED Pins zu schreiben.

Nein. Schau in den Quelltext!
1
void digitalWrite(uint8_t pin, uint8_t val)
2
{
3
  ...
4
  if (val == LOW) {
5
    *out &= ~bit;
6
  } else {
7
    *out |= bit;
8
  }
9
  ...
10
}
Gast #6687225
Lesenswert?

Okay Danke. Laut der Arduino Beschreibung aus dem Link im zweiten Post 
dürfte als Wert eigentlich nur High oder Low migegeben werden.

Parameter

pin: Die Arduino-Pinnummer.
value: HIGH oder LOW.

dennoch fangen sie auch alle anderen Werte ab. Beschreibung der Funktion 
ist also inkonsistent zum Quellcode. In der Beschreibung gibt es auch 
den Quellcode der Funktion oder einen Link dahin erst gar nicht.
Gast #6687248
Lesenswert?

Snoop schrieb:
> Beschreibung der Funktion ist also inkonsistent zum Quellcode.

So ist das bei Arduino. Dazu kommt, dass die konkrete Implementierung je 
nach Core (µC) variiert.

Ich gucke andauernd in den konkreten Quelltext um mich zu vergewissern, 
dass da auch wirklich das passiert, was ich erwarte.
Gast #6687265
Lesenswert?

Snoop schrieb:
> Laut der Arduino Beschreibung aus dem Link im zweiten Post
> dürfte als Wert eigentlich nur High oder Low migegeben werden.

Man kann der Funktion alles überreichen, was in einen uint8_t 
konvertierbar ist.
Und das ist bei bool eben auch der Fall.
Die Regeln sind klar.

Snoop schrieb:
> In der Beschreibung gibt es auch
> den Quellcode der Funktion oder einen Link dahin erst gar nicht.
Es ist nur eine Beschreibung des Interface der Funktion.
Auch nachvollziehbar, da es dutzende von digitalWrite() 
Implementierungen gibt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren