Probleme mit GPIO setzen eines Pins ESP8266

Hallo zusammen,
ich habe ein seltsames Verhalten und komme dem nicht auf die Schliche.

Es geht um das Einschaltverhalten eines GPIOs als Ausgang.

Ich möchte das der Pin beim einschalten , booten und initialisieren auf HIGH
bleibt.

Ich sage gleich vorweg, das ich schon alle GPIOs getestet habe die
beim Booten einen externen PullUp haben dürfen.
Das ist gesichert, das ein PU dran kann.

Also ich habe einen Pullup an dem GPIO und wenn ich
nur den GPIO als Ausgang definiere und mit

pinMode(5, OUTPUT); 
digitalWrite(5, HIGH);  

im Sketch Setup setze, passiert folgendes.....

Strom an, der ESP8266 bootet, der GPIO bleibt dauerhaft auf HIGH wie es sein soll.
Er toggelt überhaupt nicht und bleibt brav und dauerhaft auf HIGH.

Nun will ich aber den GPIO bei einer Bedingung auf LOW setzen.
Das ganze mit :

void loop()
    
  { 
    
  int SSR     =   digitalRead(0);
  int Taster  = digitalRead(2);

  if ((Taster == 1) && (SSR == 1))
         digitalWrite(5, LOW);
    
              else digitalWrite(5, HIGH);
 
  }

So und was passiert jetzt.....:

SSR und Taster sind beide LOW

Strom an..... der ESP bootet und toggelt von HIGH nach LOW und wieder auf HIGH.
Das soll er ja nicht....

Sobald die IF Abfrage drinnen ist, toggelt der Ausgang beim hochbooten.

Nehme ich die Abfrage

  if ((Taster == 1) && (SSR == 1))
         digitalWrite(5, LOW);
              else digitalWrite(5, HIGH);

wieder raus, bleibt der Pin wieder Stabil auf HIGH.

Ich verstehe nicht, warum der Pin überhaupt toogelt,
wenn die If Bedinugung nicht erfüllt ist.

Aber der Ausgang macht durch die IF Abfrage beim booten des ESP High, Low, High.
..... ohne die Abfrage bleibt es beim High.

Die Funktion als solches Funktioniert, aber das 1malige Low zwischendrinn muss weg.

Woran kann die´s nur liegen, .... es es bei allen GPIOs das gleiche Verhalten.

Ohne das delay() hätte das funktionieren müssen. Mit sollte das eine Fehlermeldung geben.

Laß die IDE den Code formatieren, dann kommst Du vielleicht selbst drauf, was Du falsch gemacht hast.

ohne Delay toogelt der Pin auch...
Sorry, das Delay hab ich rausgemacht, war von mir vertippt.
Die IDE comp. ohne ja ohne Fehler.

Es läuft ja alles, bis auf
a) einmal mit Toogel und
b) ohne Toggel.

Was kann man den jetzt noch falsch machen ?

??

Beschreib mall genau was ist `

Und genauer zu sagen bracht mann kompletten Sketsch mit Kommentaren
`Dazu noch SerMonitor einbauen, nicht das irgend da unten Dir das hopst

Dieses LOW sollte kaum bemerkbar sein. Ich warte auch auf eine ausführlichere Beschreibung.

Das ist alles....
mehr nicht...habe noch mal die Pins zum testen geändert.

Denke es ist ausführlich genug erklärt für die paar Zeilen.

void setup() 
{  
pinMode(5, INPUT);               
pinMode(4, INPUT);               
pinMode(16, OUTPUT);              
}
  
void loop()  
  { 
        
  int SSR     = digitalRead(5);
  int Taster  = digitalRead(4);

  if ((Taster == 1) && (SSR == 1))
    digitalWrite(16, LOW);
 
    else digitalWrite(16, HIGH);
  
  delay(2000);
  
  }

Sobald die IF Abfrage drinnen ist, toogelt der Ausgang am Anfang.
Und zwar so merklich, das ein Fluke das noch gut zeigt.
Und ja die 2 Eingänge sind definitiv auf LOW....ohne zu zappeln.

Welcher Fluke?

Fluke = Weltbekannter Messgerätehersteller
Fluke = Digitales Voltmeter.

Eben, der produziert alle möglichen Geräte.

Mit Deiner Verweigerung produktiver Mitarbeit kommen wir nicht weiter.

Mit deinen Kommentaren aber auch nicht...

...verweigern..., also sowas...
ich verzichte gerne auf weitere Hilfe und Kommentare von dir "DR."Diettrich.

Danke .

Aber ich denke es ist alles offen
beschrieben und der komplette Sketch liegt vor.

Und sich am Namen eines Messgerätes aufzuhängen ist doch gelindet gesagt...l.

  pinMode(5, INPUT);
  pinMode(4, INPUT);

Zeig mal einen Plan.

Sind beide mit Pulldown auf GND

Mit so einer Ansage bleiben Deine Probleme laaannnge offen

na wen ich nichts verweigere und mir das anhören muss kann ich auch was zurückschreiben

Wir sind jetzt bei #14 - und so Infos wie pullDown müssen erst erfragt werden.
Also alles mal ganz piano.

Im Setup nach dem PinMode den Pin festsetzen.
digitalWrite(16, HIGH);

Dann die nächste Frage: Steckbrett?
Komm doch mal mit Aufbauinfos rüber. Foto wäre nicht schlecht.

Ja, das mit dem `digitalWrite(16, HIGH);
im Setup hatte ich auch schon... bringt leider nichts.
Sobald die IF Abfrage drinne ist, funkt ein Low dazwischen.
Das die 2 Pins auf LOW sind, hatte ich aber schon bei 1 geschrieben. :wink:
Ne, kein Steckbrett, direkt drangelötet.

Wie gesagt, es geht ja alles , nur die Frage warum mit der IF Abfrage beim Booten ein LOW zwischen rein kommt.

hmm, ist doch seltsam.

Ich lese gerade im Datenblatt des ESP das einige Pins sich beim Booten "mit diversen"
unstabilen Zuständen beim Booten bemerkbar machen.
Anscheinend nur GPIO 4 und 5 für ein definiertes Hochohmig beim booten...

....mal probieren

Warum

digitalWrite(16, HIGH)

wen Du den

auf LOW setzt?

Ja klar - das war meiner :wink:
sollte natürlich LOW heissen.

@rainerkol
Mir ist ja noch nicht mal klar, was er da benutzt. Ist das nen NodeMCU? (12E) odder nen Wemos mini oder was hast Du da?
Es könnten ggfls. ne Handvoll serielle Ausgaben helfen.

MOOMENT:

Darf D5 (GPIO14) das?
Mach mal D3.

@my_xy_projekt das war nicht zu Dir :shushing_face:

1 Like

....Es ist so ....der ESP8266 hat nur GPIO 4 und 5 als Pins die "sauber" hochomig beim booten bleiben.
Ausgang GPIO 5 und alles ist ok.
Das hatte ich zwar schon probiert, aber durch die viele probiererei hatte ich
vergessen den digitalWrite(x, HIGH); im Setup zu nutzen.

Danke Euch trotzdem für die Hilfe.... :slightly_smiling_face:
Trotzdem bischen kurios, das ganze..