J'ai reprit ce programme qui est censé compter un nombre x d'appuis sur un BP et allumer une LED au bout de 3 appuis. Le souci c'est qu'il ne l'allume pas forcément au bout de 3 appuis...mais au bout de 2 ou 4... Sauriez-vous me relever l'erreur dans mon code ?
Merci.
int compteur = 0 ;
int newcompteur = 0 ;
int led = 3; int bouton = 2; static int etatprec = HIGH ;
void setup() {
pinMode (2, INPUT_PULLUP) ;
pinMode (3, OUTPUT) ;
digitalWrite(3, LOW) ;
}
void loop() {
if (bouton == HIGH && etatprec == HIGH) {
newcompteur = compteur +1 ;
compteur = newcompteur ;
delay(100) ;
}
bouton = etatprec ;
if (compteur == 3) {
digitalWrite(3, HIGH) ; }
}
int compteur = 0;
int led = 3;
int bouton = 2;
int state = LOW, oldState = LOW;
void setup()
{
pinMode ( 2, INPUT_PULLUP ) ;
pinMode ( 3, OUTPUT ) ;
digitalWrite ( 3, LOW ) ;
}
void loop()
{
state = digitalRead ( bouton ); // faut faire une lecture pour avoir le status
if ( ( state == HIGH ) && // il faut quie l'etat courant soit haut pour un front montant
( oldState == LOW ) ) // mais if faut que l'ancien et le nouveu soit different pour voir un front
{
compteur++; // faison simple, une incrémentation est ... mieux
}
oldState = state; // c'est l'etat courant qu'on copie dans l'ancien
if ( compteur == 3 ) // ça c'est bon
{
digitalWrite ( 3, HIGH ) ;
}
}
mais ce serait certainement mieux en interruption
- Edité par ox223252 4 février 2019 à 13:52:47
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub