Pour mon projet terminale où on "équipe" un vélo, je suis amené à coder en Arduino. En fait, j'ai ajouté entre autres un écran LCD 20x4, un joystick, ainsi qu'un module horloge.
Grace à l'horloge, quand il fait nuit (en fonction de l'heure et du mois), une LED (qui sera remplacée par un phare LED) s'allume automatiquement. De ce côté là, pas de problème. Le petit problème étant avec le joystick.
En fait, je veux aussi actionner le même phare avec le switch du joystick.
Voici donc mon problème: j'ai réussi à transformer le bouton poussoir du joystick en interrupteur, mais lorsque je reste appuyé un peu trop longtemps, la LED clignote en même temps.
J'ai alors pensé à rajouter une boucle while pour dire tant que le bouton n'est pas lâché, on ne sort pas de la boucle, mais cette fonction fait que (je ne sais pas pourquoi) le programme freeze !...
Voici une partie de mon code:
///////////////ALLUMAGE MANUEL DES LED AVEC LE SWITCH DU JOYSTICK///////////////
{
//Mise en place de l'étât du bouton du Joystick
buttonState = digitalRead(SW);
//Si l'étât du bouton a changé
if (buttonState != lastButtonState)
{
//Et que le bouton est pressé
if (buttonState==LOW)
{
//On change l'étât de la LED si il est à 1
if(ledStatemanu==LOW)
{
while(buttonState==1){};
ledStatemanu=HIGH;
buttonState=0;
lastButtonState == buttonState;
if(ledStateauto==HIGH)
{
lcd.clear();
lcd.setCursor(1,1);
lcd.print("Il fait nuit !");
lcd.setCursor(1,2);
lcd.print("Ne pas eteindre");
lcd.setCursor(1,3);
lcd.print("la lumiere !");
delay(2000);
}
}
else if(ledStatemanu==HIGH)
{
while(buttonState==0){};
ledStatemanu=LOW;
buttonState=1;
lastButtonState == buttonState;
}
}
}
delay(50);
}
Merci beaucoup d'avance! Bonne soirée à tous.