Bouton poussoir démos d1 mini

Bonjour à ts,

J’ai un problème de base avec un bouton poussoir monté sur un wemos d1 mini.

Je veux tester simplement l’appuie du poussoir avec un digitalRead.

J’ai mis le BP sur le GPIO 15 (D8) déclaré avec un INPUT-PULLUP.

Et je bloque le loop avec un WHILE(digitalRead(pinBouton) == HIGH)

Mais le programme passe quand même??

J’ai remarqué que la condition while est passé par le programme lorsque la led du wemos s’allume (elle clignote toute les 5 secondes environs).
Y a t’il un lien?
Je pige pas mon pb?

Merci pour votre aide !

Bonjour,

Il ne faut pas bloquer le programme sans appeler yield()

while (digitalRead(pinBouton) == HIGH) {yield()}

+1
un yield() ou un delay() rendent la main à la partie de l'ESP8266 qui travaille en arrière plan.
sans cela l'ESP8266 est interrompu et redémarre.

Ho ! Pinaise !
J’avais déjà vu ce Watchdog apparaître dans des billets sans ne jamais avoir pigé le truc!

Donc la fonction yield() va permettre d’incrémenter le « chien » pour éviter le reset logiciel !!

C bien ça ?

Je teste asap avec mon fils !

Merci à toi !!

Oui, c'est ça.

yield() ajoute une très courte pause dans l'exécution du code 'utilisateur', pause mise à profit par l'activité d'arrière plan qui elle , pourra faire son travail gèrera le chien de garde.

L'application 'utilisateur' n'est pas seule en piste contrairement aux cartes Arduino auxquelels ont est habitués, il y a des 'servitudes' en arrière plan !

yield() est équivalent à delay(0)

L'explication détaillée est içi (doc de Référence)

Merci à vous deux!!

Une fois qu’on le sait, ça paraît évident !

fonctionne impec maintenant