je besoin de votre aide si quelle qu'un qui peut m'aider svp je suis bloqué.
je fais un programme avec une carte mega,afficheur Lcd et clavier 16 touches.
Mon programme consiste de faire naviguer entre les pages et enregistre les informations sélectionné,mon problème c'est si je saisie une valeur je peut pas enregistrer ou reculer à la page précédente.voilà mon programme:
lcd.setCursor(4, 1);
lcd.print("NOMBRE DE PIECES");
} break ;
case (4):
{
lcd.setCursor(4, 1);
lcd.print("enregistré");
} break ;
case (11):
{
lcd.setCursor(4, 1);
lcd.print("moule 1");
} break ;
case (12):
{
lcd.setCursor(4, 1);
lcd.print("moule 2");
} break ;
case (13):
{
lcd.setCursor(4, 1);
lcd.print("moule 3");
} break ;
case (21):
{
lcd.setCursor(4, 1);
lcd.print("plas 1");
} break ;
case (22):
{
lcd.setCursor(4, 1);
lcd.print("plas 2");
} break ;
case (23):
{
lcd.setCursor(4, 1);
lcd.print("plas 3");
} break ;
case(31):{
lcd.setCursor(0,1); // se positionne en colonne,ligne
valeur=SAISIE_uINT();
}break;
}
if (key)
{
lcd.print(key);
switch (key)
{
case '*':
digitalWrite(ledpin, LOW);
break;
case '#':
digitalWrite(ledpin, HIGH);
break;
case 's':
{ lcd.clear();
if (p == 0)p = 1;
else if (p == 1)p = 11;
else if (p == 2)p = 21;
else if (p == 3)p = 31;
// else if (p == 31)p = 3;
}
break;
case 'b':
{ lcd.clear();
if (p == 1)p = 2;
else if (p == 2)p = 3;
else if (p == 3)p = 4;
else if (p == 11)p = 12;
else if (p == 12)p = 13;
else if (p == 13)p = 14;
else if (p == 21)p = 22;
else if (p == 22)p = 23;
else if (p == 23)p = 24;
}
break;
case 'h':
{ lcd.clear();
if (p == 2)p = 1;
else if (p == 3)p = 2;
else if (p == 4)p = 3;
else if (p == 12)p = 11;
else if (p == 13)p = 12;
else if (p == 14)p = 13;
else if (p == 22)p = 21;
else if (p == 23)p = 22;
else if (p == 24)p = 23;
}
break;
case 'r':
{if(p==1||p==2||p==3||p==4)p=0;
else if(p==11||p==12||p==13||p==14||p==21||p==22||p==23||p==24||p==31)p=1;}
break;
default:
Serial.println(key);
}
// if (key == '1') {
// p = 1 ;}
}
}
////////////////////////
unsigned int SAISIE_uINT (){ // fonction qui renvoie une valeur unsignedint (16bits)
//---- variables locales utilisées dans la fonction
unsigned char saisie_int[8]={0,0,0,0,0,0,0,0}; // crée un tableau de variables char pour saisir valeur
unsigned char compt_touche_int; // variable de comptage du nombre de touches saisies
unsigned long nombre_saisi_int; // variable de calcul du nombre saisi
unsigned char touche_int; // variable locale pour valeur touche appuyée de 0 à 15
//---- initialisation des variables utilisées ----
compt_touche_int=0; // aucune touche saisie au démarrage
nombre_saisi_int=0; // initialise la variable
//------ gestion appui touche sur clavier
while (compt_touche_int<6) { // tant que pas appuis maxi = 5 pour int (valeur maxi=65535)
touche_int= kpd.getKey(); // lecture de la touche appuyée
if (touche_int!= NO_KEY){ // si une touche a été frappée -- gestion de la touche appuyée
if (touche_int=='#')break;// // sort du while si appui sur #
if (touche_int=='*'){lcd.clear();break;}
if (touche_int=='h')break;
if (touche_int=='b')break;
for (byte i=0;i<ROWS;i++) {
for (byte j=0; j<COLS;j++){
if (touche_int==keys[i][j]) touche_int=keys[i][j]-48; // extrait valeur numérique à partir ASCII
}
}
saisie_int[compt_touche_int]=touche_int; //enregistre le caractère dans tableau code_saisi
lcd.print(char(saisie_int[compt_touche_int]+48)); // affiche valeur à emplacement actuel sur LCD
compt_touche_int=compt_touche_int+1; // on incrémente la variable compt qui mémorise le nombre de caractères saisis
//delay ()
touche_int=255; // remet à 255 la variable touche... pour éviter prise en compte même appui à plusieurs reprises
} //---- fin gestion appui clavier
}// fin du While = fin de la lecture du clavier
//--------- calcul valeur saisie en fonction du nombre de chiffres saisis ---------
if (compt_touche_int==0)nombre_saisi_int=0; // si aucun chiffre saisi
if (compt_touche_int==1)nombre_saisi_int=saisie_int[0]; // si 1 seul chiffre saisi
if (compt_touche_int==2)nombre_saisi_int=(saisie_int[0]*10)+(saisie_int[1]*1); // si 2 chiffres saisi
if (compt_touche_int==3)nombre_saisi_int=(saisie_int[0]*100)+(saisie_int[1]*10)+(saisie_int[2]*1); // si 3 chiffres saisi
if (compt_touche_int==4)nombre_saisi_int=(saisie_int[0]*1000)+(saisie_int[1]*100)+(saisie_int[2]*10)+(saisie_int[3]*1); // si 4 chiffres saisi
if (compt_touche_int==5)nombre_saisi_int=(saisie_int[0]*10000)+(saisie_int[1]*1000)+(saisie_int[2]*100)+(saisie_int[3]*10)+(saisie_int[4]*1); // si 5 chiffres saisi
//------ à réaliser en sortie de lecture du clavier ----
compt_touche_int=0; // réinitialise le nombre de touche saisies
//----- renvoi de la valeur saisie ----
return (nombre_saisi_int); // renvoie la valeur - sortie de la fonction
Bonjour,
Ici, ce que tu cherches à faire, c'est afficher une page en fonction du nombre saisi sur le clavier.
Enfait, l'objectif est de segmenter ton affichage en plusieurs fonctions : un fonction qui va traiter la valeur saisie, et une qui va gérer l'affichage.
affichage_page(){ switch(page){ case 1: affichage_page1(); break; //etc. } }
Voilà, ici il faut récupérer la valeur entrée, key, dans la variables page. La variable page sert de sauvegarde ici au travers du loop(). Voilà, je te laisse comprendre la suite.