/* - Ce code sert d'auto-maintien et d'anti-rebond pour bouton poussoir monté en pullup. - Les variables sont à déclarer en début de programme. Adapter leur nom au programme si besoin. - La fonction setup doit être ignorée, elle ne sert que pour le fonctionnement de ce programme de manière autonome. - La fonction loop représente le programme de destination et ne sert qu'à appeler la fonction "antiRebondAvecVerrouillage" et à représenter son résultat sur une sortie. Elle n'est pas à copier. - La fonction "antiRebondAvecVerrouillage": - Est à copier dans le programme et à renommer si besoin. - Prend comme argument le numéro de l'entrée à lire ou la variable correspondante. - Retourne une variable de type int qui représente l'état du contact auto-maintenu. */ const int POUSSOIR = 2; //Constante, ne sert que pour ce programme, ne pas intégrer. int out = 0; boolean verrouillage = 0; unsigned long int t1; void setup(){ pinMode(POUSSOIR, INPUT_PULLUP); pinMode(10, OUTPUT); } void loop(){ int outFonction = antiRebondAvecVerrouillage(POUSSOIR); if (outFonction == 1){ digitalWrite(10, HIGH); } if (outFonction == 0){ digitalWrite(10, LOW); } } int antiRebondAvecVerrouillage(int inPoussoir){ if(digitalRead(inPoussoir) == HIGH){ t1 = 0; verrouillage = 0; } if((digitalRead(inPoussoir) == LOW) and (t1 == 0)){ t1 = millis(); } if((digitalRead(inPoussoir) == LOW) and (millis() - t1 >= 50) and (verrouillage == 0)){ switch(out){ case 0: out = 1; verrouillage = 1; break; case 1: out = 0; verrouillage = 1; break; } return out; } }