Wenn man einen Pin, an dem z.B. ein Sensor hängt, mit pinMode(5, INPUT) konfiguriert, dann hat der Pin keinen definierten Wert.
Aus diesem Grund kann er solange zwischen HIGH und LOW schwanken, bis ihm ein Zustand zugeschrieben wird. 


Wenn man z.B. einen Taster haben möchte, der LOW schaltet, so soll dieser für den Rest der Zeit dann HIGH schalten. 
So würde man dann einen Pullup-Widerstand benutzen.

Umgekehrt aber, wenn man möchte, dass standardmäßig LOW anliegt und beim Drücken des Tasters HIGH geschaltet werden soll,
so muss man einen Pulldown-Widerstand benutzen.


Dafür hat der ESP32 interne Pullup- / Pulldown-Widerstände, die zugeschaltet werden können. Diese können mit INPUT_PULLUP als Argument im Befehl pinMode() eingeschaltet werden.
Bei INPUT_PULLUP wird der Pin als Eingang deklariert und wenn er nicht beschaltet ist wird dieser auf HIGH gesetzt.
Bei INPUT_PULLDOWN hingegen wird der Eingang auf LOW gesetzt.

Anmerkung:

Nicht alle GPIOs (general purpose input/output), also die Pins,  haben einen Pullup und Pulldown Widerstand.



Syntax:

pinMode(pin, INPUT_PULLUP);    // setzt den Pin als Eingang und auf HIGH

pinMode(pin, INPUT_PULLDOWN);    // setzt den Pin als Eingang und auf LOW

Parameter:

  • pin: die Pinnummer des Pins, der konfiguriert werden soll (z.B. 17) 


Beispiel / Initialisierung:

void setup() 
{
  //INPUT_PULLUP
  pinMode(16, INPUT);
  digitalWrite(16, HIGH);

  //kürzer:
  pinMode(16, INPUT_PULLUP);


  //INPUT_PULLDOWN
  pinMode(17, INPUT);
  digitalWrite(17, LOW);

  //kürzer:
  pinMode(17, INPUT_PULLDOWN);
}

void loop()
{

}
Zuletzt geändert: Donnerstag, 18. Februar 2021, 10:25