Frage zu pinMode

Hallo zusammen,

als alter Knacker und Neueinsteiger bin ich in einem Sketch über folgendes gestolpert: pinMode(LED,HIGH)

pinMode und LED sind mir geläufig. Aber was hat es mit dem HIGH auf sich.

Vielleicht mag mich ja jemand erleuchten

Vielen Dank im voraus

Das ist nur zu deiner Verwirrung drin.

Was LED eigentlich bedeutet, steht irgendwo in deinem Sketch. ZB als

#define LED 13

oder als

const byte LED=13;

Genauso eine Definition gibt es bereits vordefiniert für HIGH (1).

Da der vordefinierte Wert für OUTPUT auch 1 ist, merkt der Compiler keinen Unterschied, meckert nicht und erzeugt das gleiche Ergebnis wie bei

pinMode (LED,  OUTPUT);

Herzlichen Dank für die rasche Antwort.

MfG

Etwas irritierend könnte auch diese Kombination sein, die den internen PullUp-Widerstand aktiviert:

pinMode (LED,  INPUT);
digitalWrite(LED, HIGH);

Dafür gibt es eine "Abkürzung":

pinMode (LED,  INPUT_PULLUP);

Willkommen im Forum, laß es knacken :)

als alter Knacker und Neueinsteiger bin ich in einem Sketch über folgendes gestolpert

So ist das eben mit dem Internet: Jeder, der ein tolles Erlebnis hat, veröffentlicht es. Man kann also davon ausgehen, dass das so ähnlich schonmal funktioniert hat. Ob man es aber nachmachen sollte, ob wesentliche Randbedingengen ( Version der IDE ?) vorausgesetzt aber nicht erwähnt wurden, oder ob etwas trotz verwirrender Fehler funktioniert, wer weiß?

Der erste Blink-Sketch ist nun mal ein tolles Erlebnis. ;) Schön, dass dir dein Stolpern aufgefallen ist.


pinMode (LED,  INPUT_PULLUP);

ist für den Compiler auch kein Fehler, und lässt die Led evtl. sogar ganz schwach aufleuchten, ist aber natürlich bei der Frage nach dem "Sinn" dieser Anweisung Quatsch. (Selbst unter Berücksichtigung des Tricks, dass man Leds als Photodioden missbrauchen kann)

Mal probiert:

INPUT: 0
OUTPUT: 1
INPUT_PULLUP: 2

Also ist zweimal Ausgang wie einmal Eingang mit PullUp:

pinMode (LED, OUTPUT + OUTPUT); // das mag der Compiler!

Das ist das C+±Compiler-Einmaleins ;D

@LionCC: Danke für die Frage, mir sind gerade gruselige Fehlermöglichkeiten klargeworden.

gruselige Fehlermöglichkeiten…

… gibt es beliebig viele,
wenn man Leute reinlegen oder verwirren will.

pinMode(LED, HIGH); // war eher ein Anfänger-Versehen, schätze ich mal.

pinMode(LED, OUTPUT == HIGH); // auch hübsch und fehlerfrei, ausser dass die Led nicht unbedingt leuchtet :wink:

Das erinnert mich an Leonardo da Vinci, der absichtlich Fehler in seine Zeichnungen als Kopierschutz eingebaut hat. Möglicherweise ist sowas auch noch in unserer Copy&Paste-Zeit üblich.

Wer einen Sketch nur kopiert, ohne den Inhalt zu verstehen, behält den Fehler :)

agmue: Mal probiert: ... pinMode (LED, OUTPUT + OUTPUT); // das mag der Compiler!

Das ist das C++-Compiler-Einmaleins ;D

Was er mag und was irgendwie leicht verständlich ist sind 2 paar Schuhe. Ich vote für das leichter verständliche.

Grüße Uwe