^^ ^^ Voici une partie de mon programme
Alors la fonction qui marche : switch_mode()
void switch_mode() {
char* modes[] = { "Classic", "Rgl Heure", "Test" };
int nbr_mode=3; // Variable qui indique le nombre de mode dans le menu. A incrementé si besoin.
flagMenu=1;
if(menuCompt<80) {
//si appui sur boutonA , change le mode
if(boutonA.uniquePress()){
menuCompt=0;
curseur_mode++;
if(curseur_mode>=nbr_mode){
curseur_mode=0;
}
}
//Affichage du mode actuel sur la premiére ligne, et le mode suivant sur la ligne suivante
ledMatrix.setfont(3);
int len = strlen(modes[curseur_mode]);
//char toto[len]=(char) modes[curseur_mode];
for (int i=0; i<len; i++)
{
ledMatrix.putchar((5+i*5),0,modes[curseur_mode][i],1);
}
ledMatrix.putchar(0,0,'>',3);
// Afiichage Deuxieme ligne
if(curseur_mode+1>=nbr_mode)
{
len = strlen(modes[0]);
for (int i=0; i<len; i++)
{
ledMatrix.putchar((5+i*5),8,modes[0][i],1);
}
}
else{
len = strlen(modes[curseur_mode+1]);
for (int i=0; i<len; i++)
{
ledMatrix.putchar((5+i*5),8,modes[curseur_mode+1][i],1);
}
}
menuCompt++;
}
else
{
menuCompt=0;
flagMenu=0;
}
}
Et sa copie qui ne marche pas : set_time()
void set_time() // Réglage de la date et heure
{
char* rgldate[] = {"Jour", "Date", "Mois", "Annee", "Heure", "Min", "Sec", "Valider", "Retour"};
int ligne_rgl=9; // Variable qui indique le nombre de ligne dans ce sous-menu. A incrementé si besoin.
//Ci-dessous je transforme les variables de l'heure en 'char' et je met tout dans le tableau heure[]
char* heure[7];
itoa(jour,heure[0],10);
if (jour < 10) {
heure[0][1] = heure[0][0];
heure[0][0] = '0';
}
itoa(date,heure[1],10);
if (date < 10) {
heure[1][1] = heure[1][0];
heure[1][0] = '0';
}
itoa(mois,heure[2],10);
if (mois < 10) {
heure[2][1] = heure[2][0];
heure[2][0] = '0';
}
itoa(annee,heure[3],10);
if (annee < 10) {
heure[3][1] = heure[3][0];
heure[3][0] = '0';
}
itoa(hours,heure[4],10);
if (hours < 10) {
heure[4][1] = heure[4][0];
heure[4][0] = '0';
}
itoa(mins,heure[5],10);
if (mins < 10) {
heure[5][1] = heure[5][0];
heure[5][0] = '0';
}
itoa(sec,heure[6],10);
if (sec < 10) {
heure[6][1] = heure[6][0];
heure[6][0] = '0';
}
//si appui sur boutonA , change le mode
if(boutonA.uniquePress()){
curseur_rgldate++;
}
if(curseur_rgldate==7){
curseur_rgldate=0;
Serial.println(curseur_rgldate);
}
//Affichage du mode actuel sur la premiére ligne, et le mode suivant sur la ligne suivante
ledMatrix.setfont(3);
ledMatrix.putchar(0,0,'>',3);
int len = strlen(rgldate[curseur_rgldate]);
for (int i=0; i<len; i++)
{
ledMatrix.putchar((5+i*5),0,rgldate[curseur_rgldate][i],1);
}
if(curseur_rgldate<7) {
ledMatrix.putchar(47,0,'0',2);
ledMatrix.putchar(55,0,'1',2);
// ledMatrix.putchar(47,0,heure[curseur_rgldate][0],2); // Ne marche pas affiche un 'v'
// ledMatrix.putchar(55,0,heure[curseur_rgldate][1],2); // Ne marche pas affiche un '0'
}
// Afiichage Deuxieme ligne
if(curseur_rgldate+1>=ligne_rgl) // Si curseur sur dernier choix alors affiche en 2eme ligne le premier choix
{
len = strlen(rgldate[0]);
for (int i=0; i<len; i++)
{
ledMatrix.putchar((5+i*5),8,rgldate[0][i],1);
}
}
else{
len = strlen(rgldate[curseur_rgldate+1]);
for (int i=0; i<len; i++)
{
ledMatrix.putchar((5+i*5),8,rgldate[curseur_rgldate+1][i],1);
}
}
}
Je reste à votre disposition pour toutes questions ou critique sur mon code.