Bonjour à tous!
Ceci est mon premier message, donc merci à vous pour l'accueil, et chaude bise à qui veut.
Je débute sur Arduino et la programmation (Arduino), en faisant à peu près tout les moocs qui en traitent, et en faisant pas mal de recherche sur le net. J'ai déjà compris pas mal de chose, mais là, je bloque, et de plus il n'y a quasiment aucun tuto solide sur le menu LCD (16x2). Je viens donc vers vous.
Je me suis lancé comme défi de faire un petit programme qui donne l'heure, la date, où on peut changer ces deux paramètres et aussi synchroniser l'heure (ça je sais pas si ça marche une fois le prog lancé, je verrai c'est accessoire), et aussi mettre une alarme.
J'aimerai un menu comme tel que:
menu1 Affichage **
** menu11 Date
** menu12 Heure**
** menu13 Synchronisation**
menu2 Réglage
** menu21 Date**
** menu22 Heure**
** menu23 Alarme**
menu3 Alarme
** menu31 Non**
** menu32 Oui**
** menu33 Peut-être(ça c'est pour le fun)**
Ceci me permettra de mobiliser tout un tas de compétence, et j'aime bien ça.
Trois bouton pour choisir le menu, un pour le sous-menu, et un autre pour activer l'action correspondante.
Et je suis bloqué... Au sous menu. J'arrive à faire défiler le menu sur l'LCD, mais je ne comprend pas comment faire pour le sous-menu... C'est bloqué sur la première option pour l'instant.
Je me suis inspiré du mooc d'Openclassroom où, il est fait mention en guise d'exercice de faire un menu lcd, comme ça, sans prévenir et sans guère plus d'explication. J'ai essayé de broder avec ce que je connaissais et découvrais au fur et à mesure de mes recherches.
J'ai cherché tout un tas d'option et du coup j'ai fais un truc tout pourri qui ne fonctionne pas et que je devrai effacer sans nul doute (Des strings vers des pointeurs qui sont des tableaux, je pense que c'est un gros lol de ma part).
Mais allons-y, puisque le ridicule ne me tuera pas cette fois non plus:
const int bp1 = 8;
const int bp2 = 9;
int posMenu = 0;
int posSousMenu = 0;
//Nom des [3]menus de la ligne 1
String ligne1[3] = {"Afficher ",
"Regler ",
"Mettre l'alarme "};
String mAfficher[2] =
{
"La date ",
"L'heure "
};
String mRegler[2] =
{
"La date ",
"L'heure "
};
String mAlarme[2] =
{
"Oui ",
"Nope ",
};
String ligne2[3] = {*mAfficher,
*mRegler,
*mAlarme};
void loop()
{
navigation();
affichage();
}
/*********************************************/
void navigation()
{ //Variables d'état bouton
boolean stbp1 = !digitalRead(bp1);
boolean stbp2 = !digitalRead(bp2);
//Boucle de navigation
if (stbp1 | stbp2)
{
if (stbp1)
{
posMenu = (posMenu+1)%3;
}
if (stbp2)
{
switch(posMenu)
{
case 0:
posSousMenu = (posSousMenu+1)%2;
return mAfficher[posSousMenu];
case 1:
mRegler[posSousMenu];
return ;
case 2:
mAlarme[posSousMenu];
return ;
}
}
delay(200);
}
}
//fonction de rafraîchissement de l'écran LCD
void affichage()
{
/**********LIGNE 1*****************/
lcd.setCursor(0, 0); // on positionne le curseur en haut à gauche
lcd.print(ligne1[posMenu]); // on écrit le menu de la ligne 1
/**********LIGNE2******************/
lcd.setCursor(0, 1); // on passe à la ligne suivante
lcd.print(ligne2[posSousMenu]);
}
En gros, ce que j'aimerai que quelqu'un me dise et m'explique, c'est comment gérer un sous-menu, tout simplement, et sans utilisation de lib extérieures, j'ai envie d'apprendre et donc ne pas me reposer sur le taf de quelqu'un, pour l'instant.
D'avance merci, et espérant ne pas avoir été trop long pour vos petits yeux! :o
PS:Ce code est en mode "je lache l'affaire après avoir essayé des trucs nawak", il y a donc des bout d'essais incomplets ou inutilisés, merci pour votre indulgence