executer une fois l'instruction dans la boucle s'il n'y a pas de changement

Bonjour,

ca fait deux trois jours que je bute sur un truc simple et je ne comprends pas. J'ai un bouton, je souhaite qu'en fonction de son état, il déclenche une écriture sur la voie série. Quand le circuit est fermé, l'état est à high, la l'instruction va bien , cela écrit "pause une fois et ne bouge pas jusqu'au changement de statu, par contre quand le circuit est ouvert il écrit un coup "pause" puis "run" etc etc....
voici le bout de code

int buttonPin = 2;
boolean buttonPosition =0 , buttonState=0 ;

void setup() {
pinMode(buttonPin, INPUT);
Serial.begin(115200);
}

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

if ((buttonState == HIGH) && (buttonPosition == false)){delay(10);unpause(); }

if ((buttonState == LOW) && (buttonPosition == true)){delay(10);pause(); }
}

void pause()
{
Serial.println("Pause ");
buttonPosition = false;

}

void unpause()
{
Serial.println("Run");
buttonPosition = true;

}

Qu'ai je raté s'il vous plait ?
j'ai fait le choix de mettre a l'exterieur de la loop, les instructions dont j'ai besoins.

Bonjour,

Est ce ce que tu as bien mis une résistance de pulldown sur ton entrée?

  1. Met ton code entre balise code et non quote
  2. Met un antirebond dans ton code, un delay de 10ms devrait suffire
  3. Abaisse la vitesse du serial à 9600 baud

Est-ce à dire que ton bouton est placé en le +5V et l'entrée ?

Si oui, quand le bouton est ouvert, le niveau d'entrée risque de ne pas être bien défini.

Tu devrais placer ton bouton entre le GND et l'entrée et écrire :

   pinMode(buttonPin, INPUT_PULLUP);

Ainsi, les deux niveaux seraient bien définis.

Cordialement.

Pierre

bonjour,
euh, comment dire .... :stuck_out_tongue: non, maintenant avec je viens de tester ca va nettement mieux, grand merci ;op