Bonsoir à tous
Ci-joint mon bout de code pour tester l'affichage d'un menu avec l'écran LCD et les 5 boutons
sur l'entrée A5, ça marche bien et je peux naviguer dans le menu assez facilement
Le stockage en EEPROM n'est pas forcément la voie définitive , par contre le stockage des variable en tableau
est à exploiter
l'archive
Fichier(s) joint(s):
Les tableaux
Code:
// initialisation du menu
char menu_text [5][6][16] = {
{
{"Cumul compt =>"}, {"Nombre =>"}, {"Decomptage =>"}, {"Comptage"},{"null"}
},
{
{"Nb de spires =>"}, {"Nombre =>"}, {"Debut Gauche =>"}, {"Debut Droite"},{"null"}
},
{
{"Guide fil =>"}, {"+ 10 step =>"}, {"- 10 step =>"}, {"+ 1 step =>"},{"- 1 step"},{"null"}
},
{
{"Compteur =>"}, {"+ en 1/10 =>"}, {"- en 1/10 "},{"null"}
},
{
{"RAZ EEPROM "}, {"null"}, {"null"}, {"null"}
}
};
// Il faut mettre l’adresse de l’enregistrement des valeurs de l’EEPROM à la place des 0
// Faire une fonction de parcours de tableau et de chargement des valeurs
// Puis faire un enregistrement directement dans l’EEPROM grace au tableau qui donnera
// l’adresse de la case mémoire utilisé
int menu_valeur [5][6][3] = {
{
{-2}, {0}, {-2}, {-2}, {-2}, {-2}
},
{
{-2}, {1}, {2}, {3}, {-2}, {-2}
},
{
{-2}, {4}, {5}, {6}, {7}, {-2}
},
{
{-2}, {8}, {9}, {-2}, {-2}, {-2}
},
{
{-2}, {-2}, {-2}, {-2}, {-2}, {-2}
}
};
Le codage des boutons
Code:
// read the buttons
int read_LCD_buttons()
{
adc_key_in = analogRead(A5); // read the value from the sensor
// my buttons when read are centered at these valies: 0, 144, 329, 504, 741
// we add approx 50 to those values and check to see if we are close
if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
lcd.setCursor(0,0);
//lcd.print(adc_key_in);
// For V1.0 us this threshold
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in > 150 && adc_key_in < 250) return btnUP;
if (adc_key_in > 375 && adc_key_in < 475) return btnDOWN;
if (adc_key_in > 565 && adc_key_in < 665) return btnLEFT;
if (adc_key_in > 795 && adc_key_in < 895) return btnSELECT;
return btnNONE; // when all others fail, return this…
}
Je pense travailler ce code pour enregistrer les données dans ce tableau de valeur
les "cases" nombre ,
mettre des constantes pour les saut de compteur ou guide fil
ainsi que pour le positionnement à gauche ou à droite pour dito
Les "cases" guide fil auront l'avantage de permettre une inversion de sens automatique
du chariot et le côté de départ
En réflexion et la nuit portant conseil , a ++
