Pages: [1]   Go Down
Author Topic: LCD scroller texte sans la fonction prévue...  (Read 375 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
j'aimerais faire défiler un texte sur une ligne de mon LCD (2*16 ou 4*20) sans utiliser la fonction lcd.scrollDisplayLeft().
J'ai créé une routine (void) qui marche très bien mais uniquement si j'affiche que 16 charactères (sur le 2*16). Dès que j'en mets plus, c'est fini...

Code:
const int lcdx = 20;    //Nbres caratères horizontal
const int lcdy = 4;     //Nbres caratères vertical

  data="Waiting Data ... Waiting Data ...";
  temps = millis();  



if(!serie && (millis()-temps > 500)){      //Fait scroller le texte manuellement tant qu'
   temps = millis();                       //aucune donnée n'est recu par le port serie.
 i +=1;
    affiche=data.substring(i,i+lcdx);
 
    lcd.setCursor(0,1);
    lcd.print(affiche);
    
   if(i==lcdx+1){
    i=0;}
}

Je peux donner le code complet;
En fait, je reçois une donnée serie sous format:
Lxx-message (xx= ligne) pour un affichage simple sur la ligne xx
Sxx-message (xx= ligne) pour un scroll (infini) de cette ligne
Xxxyy-message (xx=ligne; yy=colonne) pour afficher à telle place.

J'aurais besoin d'aide pour faire une routine "universelle" pour le scroll, en tenant juste compte de lcdx (variable constante nombres de caractères du LCD).
« Last Edit: August 10, 2013, 01:28:50 pm by nono7380 » Logged

France
Online Online
Faraday Member
**
Karma: 36
Posts: 3436
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
affiche=data.substring(i,i+lcdx);
ce n'est pas tout à fait aussi simple.
Si i+lcdx est supérieur à la longueur de la chaîne, il faut aller prendre les caractères au début de la chaîne ou remplir avec des espaces et ne reprendre au début de la chaîne qu'après avoir vidé l'écran.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En effet, mettre un espace, et reprendre du début de la chaine.
Logged

Pages: [1]   Go Up
Jump to: