Répondre à une question avec arduino

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Je cherche à faire un programme du type le juste prix sur arduino avec un écran lcd et 3 boutons (un pour dire plus, un pour moins et un dernier pour oui). Ma question est de savoir comment faire pour que le programme attende une réponse (via un appui sur un bouton) après avoir inscrit une question à l'écran ?

Merci d'avance

Sinon si le programme doit attendre un bouton sans rien faire tu peux faire un truc comme :

1
2
3
4
5
6
7
8
// boucle d'attente bloquante d'un bouton
do {
   btn_plus = digitalRead(bouton_plus);
   btn_moins = digitalRead(btn_moins);
   btn_ok = digitalRead(btn_ok);
}while(!(btn_plus || btn_moins || btn_ok));

// [...] traitement en fonction des boutons

Si tu veux juste attendre le bouton sur OK :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// boucle d'attente bloquante d'un bouton
do {
   btn_plus = digitalRead(bouton_plus);
   btn_moins = digitalRead(btn_moins);
   btn_ok = digitalRead(btn_ok);

   if(btn_plus)
      prix++;
   if(btn_moins)
      prix--;
}while(!btn_ok);

// [...] traitement en fonction des boutons

(prévoir une détection de front pour éviter d'additionner a gogo)

+0 -0

Alors j'ai essayé la première boucle, le programme attend effectivement bien que j'appui sur un bouton par contre on dirait que la question est écrite deux fois sur l'écran (en tout cas le début à la suite de ce qu'il y avait déjà d'affiché) et lorsque j'arrive dans mes fonctions de valeur sup ou inf, la valeur retournée n'est plus la moitié de la tranche restante et le programme est ensuite bloqué quelque soit mes appuis sur les boutons…

Sinon voilà ce que j'avais tenté pour attendre un appui sur un bouton

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void loop()
{
    question();//fonction pour poser la question
    while(x == -1)
    {
        etatG = digitalRead(boutonG);
        etatM = digitalRead(boutonM);
        etatD = digitalRead(boutonD);
        if(etatD == LOW)//si la valeur est supérieure...
        {
            x = 0;
            valeursup();//...alors fonction valeursup
        }
        if(etatM == LOW)//si c'est la bonne valeur...
        {
            x = 0;
            bravo();//...alors bravo
        }
        if(etatG == LOW)//si la valeur est inférieure...
        {
            x = 0;
            valeurinf();//...alors fonction valeurinf
        }
    }
}

edit : idem avec la deuxième boucle

+0 -0

C'est bon ! Avec les détections de front mises au bon endroit dans le programme et grâce à la première boucle do/while, tout fonctionne !

Merci encore

edit : rectification le programme fonctionne bien par contre ma question s'affiche correctement la première fois : Est-ce 500 ? MOINS OUI PLUS

Puis les fois suivantes elle s'affiche une nouvelle fois en bout: Est-ce 500 ? MOINS OUI PLUSEs

J'ai donc encore du travail mais c'est fonctionnel

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte