Bonjour à tous,
Je suis en train de préparer mon premier projet Arduino et je bloque un peu sur 2 ou 3 petites choses...je fais appel à votre savoir pour m'éclairer....
Mon projet est de faire un boitier avec un bouton poussoir en entrée, 8 leds en sortie plus une led témoin, un écran avec 2 bouton poussoir qui serviront de choix de menu.
J'ai donc 8 menus, 7 sont des menus préprogrammés, le 8ème est un mode manuel. La différence entre les menus préprogrammés réside dans la fréquence de clignotement des leds. A chaque fois que je choisi un menu, la led témoin cligno à la fréquence programmée pour le menu en question. Mon soucis est le suivant :
J'aurais aimé faire clignoter cette led témoin durant un certain nombre de cycle et qu'elle s'arrête.
voici mon code en liens
http://www.megaupload.com/?d=NFVS74LJ
On m'a fait penser à utiliser des variables dans la partie de choix du menu (verifEtatPoussEcran()) en déclarant par ex :
boolean etatChoixPreset = false;
int monCompteur = 0;
puis en intégrant dans ma fonction verifEtatPoussEcran() :
etatChoixPreset = true;
monCompteur = 0;
////////////////////////////////////////Fonction VERIFICATION ETAT POUSS ECRAN////////////////////////////////////////
void verifEtatPoussEcran()
{
if(digitalRead(pouss2) == LOW && Etatpouss2 == false){
delay(attenteCapteurs); //mise d'un délai pour attendre la stabilité du signal et voir si c'est bien appuyé
if(digitalRead(pouss2) == LOW && Etatpouss2 == false){
actualPreset++;
Etatpouss2 = true;
(actualPreset>NBPRESET)?actualPreset=1:true; // Permet de ne pas dépasser le nombre de preset NBPRESET
affichPresetEcran();
etatChoixPreset = true;
monCompteur = 0;
}
}
if(digitalRead(pouss2) == HIGH && Etatpouss2 == true){
delay(attenteCapteurs); //mise d'un délai pour attendre la stabilité du signal et voir si c'est bien appuyé
if(digitalRead(pouss2) == HIGH && Etatpouss2 == true){
Etatpouss2 = false; //on repasse en mode false, donc c'est en écoute d'appuye sur le bouton
}
}
if(digitalRead(pouss1) == LOW && Etatpouss1 == false){
delay(attenteCapteurs);
if(digitalRead(pouss1) == LOW && Etatpouss1 == false){
analyspreset();
actualPreset--;
Etatpouss1 = true;
(actualPreset< 1)?actualPreset=NBPRESET:true;
affichPresetEcran();
etatChoixPreset = true;
monCompteur = 0;
}
}
if(digitalRead(pouss1) == HIGH && Etatpouss1 == true){
delay(attenteCapteurs);
if(digitalRead(pouss1) == HIGH && Etatpouss1 == true){
Etatpouss1 = false;
}
}
}
et en intégrant dans la fonction cligno
monCompteur++;
if(monCompteur>4){
etatChoixPreset = false;
void cligno(){
interCligno = timeBlink[actualPreset];
if(currentMillis - diffCligno > interCligno && etatChoixPreset ==
true) {
// stock la valeur actuelle de millis
diffCligno = currentMillis;
// clignottement de la LED
if(etatLED == true){
etatLED = false;
digitalWrite(pinLed, LOW);
}else{
etatLED = true;
digitalWrite(pinLed, HIGH);
}
}
monCompteur++;
if(monCompteur>4){
etatChoixPreset = false;
}
}
Malheuresement plus de clignotement mais une led éteinte ou allumé 1 menu sur 2...
Je bloque complètement, si qqun a une idée...