Bonjour,
Voila mon projet consiste à incrementer plusieurs compteur grace à l'arduino. L'un est régulier (environ toutes les secondes), l'autre est aléatoire. Ces incrémentation sont du a des appui sur des interrupteurs. J'ai donc choisi de mettre mon compteur régulier sur une interuption externe afin que si l'autre doit s'incrementer en même temps qu'il n'y ai pas de souci. Seulemnt mon interuption ne marche pas comme elle le devrait, j'ai deux exemple :
celui qui reprend l'exemple du site officiel :
volatile int cptlapin; // compteur de lapins
int cpt_SC // compteur de sous comptage
int cptLM; // compteur de lapins mortsvoid setup()
{
pinMode(2,INPUT);
attachInterrupt(0, INTERRUPT0,FALLING);
Serial.begin(19200); // ouvre le port série, fixe le taux de données à 19200 bps
delay(1000); // attendre 1s
}void loop()
{
// si on appui sur l'interupteur de Lapin morts alors cpt_LM++
// si on appui sur l'interupteur de sous comptage alors celui est activé/désactivé
}void INTERRUPT0()
{
cptlapin++; // on compte un lapin
if(actif) // si le sous comptage est actif
{
cptSC++; // on compte un lapin de sous comptage
}
}
Le problème avec ce code, c'est qu'a chaque front descendant, le compteur est incrémenter 70 fois au lieu d'une seule !
J'ai donc changer le code :
volatile int cptlapin; // compteur de lapins
int cpt_SC // compteur de sous comptage
int cptLM; // compteur de lapins mortsvoid setup()
{
pinMode(2,INPUT);
Serial.begin(19200); // ouvre le port série, fixe le taux de données à 19200 bps
delay(1000); // attendre 1s
}void loop()
{
attachInterrupt(0, INTERRUPT0,FALLING);
// si on appui sur l'interupteur de Lapin morts alors cpt_LM++
// si on appui sur l'interupteur de sous comptage alors celui est activé/désactivé
}void INTERRUPT0()
{
cptlapin++; // on compte un lapin
if(actif) // si le sous comptage est actif
{
cptSC++; // on compte un lapin de sous comptage
}
dettachinterrupt(0);
}
Mais j'ai toujours le même problème, un peu moindre néanmois : pour un appui, il incrémente de deux à trois fois au lieu d'une.
SVP comment faire pour qu'a chaque interuption, il incrémente qu'une seule fois ?