Bonjour^^
je post mon premier topic;
je but sur le principe du scrolling ; je souhaite afficher sur un ecran 420 une liste de parametre contenu dans un tableau ; mon materil : afficheur 420 et 4 boutons poussoir (Fleche Bas;Fleche Haut ; Enter et Echap).
Mon programme fonctionne correctement quand je fait descendre la liste mais quand je remonte la liste ; j'ai un
soucis indexation. Apres x recherches sur differents forum ; aucun forum ne parle de scrolling sur un afficheur 4*20.
Je vous mets le code et j'espere que vous vous me mettez sur la piste pour resoudre ce soucis.
Merci d'avance de votre participation probable.
Joël ( situé en haute Normandie)
/
CODE
PGM_P PROGMEM paramMess[] = { "Mess 0", "Mess 1", "Mess 2", "Mess 3", "Mess 4", "Mess 5", "Mess 6", "Mess 7",
"Mess 8", "Mess 9", "Mess 10", "Mess 11"};int iPosTabCourant=0;
int indiceScrolling=0;
int bMettreAjourScrollingBas=0;
int bMettreAjourScrollingHaut=0;
int iPositionCurseur=0;
int ifirstAff=0;void loop()
{
int iPos;
int iNombreParam=12;
int iPosAffichage;
int iPosCalculeIndex;GestionKeyLcd(); //lecture des BP
iNombreParam=12;
if (iKeyPress==iKeyDOWN && (iPosTabCourant+indiceScrolling) <((iNombreParam)))
{
iPosTabCourant++;
bMettreAjourScrollingBas=1;
Serial.print("iPosTabCourant:");
Serial.print(iPosTabCourant,DEC);
Serial.print(" ");
Serial.print("indiceScrolling:");
Serial.println(indiceScrolling,DEC);
}
else if ( iKeyPress==iKeyUP && iPosTabCourant>0)
{
iPosTabCourant--;
bMettreAjourScrollingHaut=1;
Serial.print("iPosTabCourant:");
Serial.print(iPosTabCourant,DEC);
Serial.print(" ");
Serial.print("indiceScrolling:");
Serial.println(indiceScrolling,DEC);
}
else
{
bMettreAjourScrollingHaut=0;
bMettreAjourScrollingBas=0;
}
if ( bMettreAjourScrollingHaut==1 || bMettreAjourScrollingBas==1)
{
lcd.clear();
if ( bMettreAjourScrollingBas==1)
{
if (iPositionCurseur <3)
{
iPositionCurseur++;
}
else
{
iPositionCurseur=3;
indiceScrolling++;
}
}if ( bMettreAjourScrollingHaut==1)
{
if (iPositionCurseur >0)
{
iPositionCurseur--;
}
else
{
iPositionCurseur=0;
indiceScrolling--;
}
}
}
if ( bMettreAjourScrollingHaut==0 && bMettreAjourScrollingBas==0)
{
lcd.setCursor(1,iPositionCurseur);
}if(ifirstAff==0 || iKeyPress!=iKeyNoPress)
{
ifirstAff=1;
for(iPosAffichage=0;iPosAffichage<4;iPosAffichage++)
{
if ( iPosTabCourant+iPosAffichage<iNombreParam)
{
lcd.setCursor(1,iPosAffichage);
if( iPositionCurseur== iPosAffichage)
{ //LA c le print de l'item selectionné
lcd.print(paramMess[iPosTabCourant-iPositionCurseur+indiceScrolling+iPosAffichage]);
}
else
{ //la c le print des autres items
iPosCalculeIndex=iPosTabCourant-iPositionCurseur+indiceScrolling+iPosAffichage;
lcd.print(paramMess[iPosCalculeIndex]);
}
lcd.setCursor(1,iPosAffichage);
}
}
}
iKeyPress=iKeyNoPress;
delay(100);
//fin de la prémiere boucle de traitement du top depart
iFirstLoop=1;
}
