Hello ^ ^
I post my first topic;
I aim on the principle of scrolling, I want to display on a screen 4 * 20 a parameter list contained in a table, my materil: 4 * 20 display and four push buttons (Down Arrow, Up Arrow, Enter and Esc).
My program works correctly when I sent down the list but when I go up the list, I have a
concerns indexing. X after researching various forums, no forum is talking about scrolling on a display 4 * 20.
I put the code and I hope you put me on the track to fix the problem.
Thank you in advance for your participation likely. ![]()
Joel (located in upper Normandy FRance)
/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;
}
