ESP8266 "Push Button Sketch" funktioniert nicht

Hallo,

ich versuche den "Button" Beispiel-Sketch zum laufen zu bekommen also anders gesagt einen GPIO (led) auf HIGH zu schalten wenn ich einen anderen GPIO (Button oder PIR) auf HIGH schalte. Habe es an einen ESP01, ESP12 und einen nodeMCU-Board probiert. Entweder passiert garnichts oder die LED schaltet sich an und bleibt an ( auch nach reset) oder die LED leuchtet gleich. Der einzige PIN der funktioniert ist GPIO15 auf dem nodeMCU und dem ESP12. Der einfache "Blink" Sketch funktioniert einwandfrei mit allen GPIOs. Kann doch nicht sein dass alle drei ESPs kaputt sind oder übersehe ich irgendwas?

Hier nochmal der Code:

int buttonPin = 3;     
int ledPin =  14;      
int buttonState = 0;         

void setup() {

pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}

void loop() {
 
buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {
     digitalWrite(ledPin, HIGH);
  }
  else {
     digitalWrite(ledPin, LOW);
  }
}

Pullup/Pulldown vergessen (einzuschalten)?!?!

Ich dachte der hat keine eingebauten Pullups

hm das war mir neu, musste erst mal weiterbilden.

Ausgegangen vom oberen Sketch ist die Led/GPIO14 immer an sobald ich den ESP einschalte. Wenn ich jetzt GIPO 3 mit einem Wiederstand auf GND schalte dann hat das keinen Effekt.

ElEspanol:
Ich dachte der hat keine eingebauten Pullups

Es ist nicht so schön einheitlich, wie bei unseren AVRs, aber geben tuts da was....

Digital pins 0—15 can be INPUT, OUTPUT, or INPUT_PULLUP. Pin 16 can be INPUT, OUTPUT or INPUT_PULLDOWN_16. At startup, pins are configured as INPUT.

Aus: https://github.com/esp8266/Arduino/blob/master/doc/reference.md

Alos ich habe es mal kurz getestet.

Es geht, aber:

Innterner Pullup und Taster gegen Masse geht.

Externer Pulldown mit 4,7k und 1,5k geht nicht. 180 ohm Pulldown, dann geht es.

Evtl. hast du dich ja auch mit den GPIO Pind verhaspelt.

Ich habe zuerst das Blink draufgemacht und somit die beiden Pins sicher identifiziert.

P.S.:

Nimm den, der ist kürzer und macht das gleiche:

int buttonPin = 3;     
int ledPin =  14;     
        
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
    digitalWrite(ledPin, digitalRead(buttonPin));
 //     digitalWrite(ledPin, !digitalRead(buttonPin));  // wenn du mit Pullup arbeitest

}

Vielen Dank :slight_smile: