Bonjour,
Dans le cadre de mon BTS j'ai un projet qui consiste à créer un banc d'essai pour inclinomètres, en gros c'est un plateau fixer sur un axe qui tourne grâce à un moteur pas à pas piloter par l'Arduino Uno et un driver, le moteur doit se positionner en fonction de l'angle entrer par l'utilisateur a partir du pavé numérique et la valeur s'affichera sur un ecran LCD.
Etant débutant avec arduino,
Tout ce passe bien mais j'ai un soucis dans la programmation, lors de la fonction loop() j'ai 2 fonctions, dont la fonction appelée angle() dans laquelle j'ai un soucis, j'essaye de convertir les caractères saisi au pavé en entier ou autre afin qu'il puisse me l'afficher mais aussi l'utiliser dans un calcul.
Les caractères on l'air de se convertir mais seulement une seule fois, je rentre ma valeur d'angle, le moteur tourne et il m'affiche ma valeur mais lorsque je veux recommencer il m'affiche toujours la même valeur et le moteur ne tourne plus.
Je ne sais pas si je suis assez compréhensible mais je vous mets la fonction en dessous, j'aurais vraiment besoin d'aide s'il vous plaît je n'arrive pas à comprendre pourquoi ça ne fonctionne qu'une seule fois,
Merci
void angle()
{
rec1:
x=0;
y=0;
d=0;
lcd.setCursor(0,1);
while(ang<2)
{
touche = clavier.getKey(); // Lecture la touche appuyée
if (touche != NO_KEY)
{
Clavier[compteur++]= touche;
Clavier[compteur]= '\0';
y =atol(Clavier);
if (touche=='A') {lcd.clear(); lcd.setCursor(1,0); d=(y-x)/0.1; moteur.step(d); delay(300); compteur = 10; lcd.print("Angle : "); lcd.print(y); lcd.setCursor(0,1); lcd.print("Nouveau ? C:Oui"); goto rec1;}
if (touche=='B') {lcd.clear(); lcd.setCursor(1,0); lcd.print("Entrez l'angle"); goto rec1;}
if (touche=='C') {lcd.clear(); lcd.setCursor(1,0); x=y; lcd.print("Entrez l'angle"); goto rec1;} else lcd.print(touche);
if (touche=='F') {lcd.clear(); d=(-x)-r; lcd.print("Etalonnage"); lcd.setCursor(0,1); lcd.print("Termine"); delay(5000); lcd.clear(); ang++;}
}
}
}
Je peux aussi mettre la totalité de mon programme si nécessaire