Gestion d'un signal carré

Bonjour
ceci explique peut être cela ! :grinning:
teste çà

const int buttonPin = 2;                        //assigne le bouton à la pin2
const int ledPin = 8;                           //assigne la led 1 à la pin8
const int ledPin2 = 9;                          //assigne la led 2 à la pin9

int buttonstate = 0;                            //le bouton est initialement à l'état bas

volatile int comptageImpulsion=0;               //le compteur d'impulsions est initialement à 0


void setup(){
pinMode(buttonPin,INPUT);                       //entree numérique  2 
pinMode(ledPin,OUTPUT);                         //sortie numérique  8 
pinMode(ledPin2,OUTPUT);                        //sortie numérique  9
 
Serial.begin(115200); 
attachInterrupt(0, gestionINT0, RISING);        // attache l'interruption externe n°0 à la fonction gestionINT0()

}


void loop(){

buttonstate = digitalRead(buttonPin);

if (buttonstate == HIGH) {                       //si le bouton est à l'état haut

digitalWrite(ledPin,HIGH);                      //le courant est envoyé sur la borne 2, la LED  s’allume
}

int state= comptageImpulsion  % 4;  // modulo
if (state==3 )                    //Utilisation Modulo si le comptage d'impulsion est le 4éme 
{
digitalWrite(ledPin2,LOW);                      //le courant est coupé sur la borne 9, la LED  s’éteind
delay (500);                                    //pendant 500ms pour visualiser la coupure
}
                      

digitalWrite(ledPin2,HIGH);                     //le courant est envoyé sur la borne 9, la LED  s’allume


}

void gestionINT0()                              //la fonction appelée par l'interruption externe n°0
{
comptageImpulsion=comptageImpulsion+1;          //incrémente la variable de comptage
Serial.print("Nombre impulsions = ");
Serial.println(comptageImpulsion);              //permet de visualiser le nombre d'impulsion sur le moniteur série
}