Bonjour,
Je viens pour poser une question sur la manipulation de chaine, car je ne m'en sort pas
Tout d'abord, j'utilise un C pour Arduino (carte de microcontroleurs AVR en open source) Si je precise cela, c'est que toutes les instructions C et C++ ne sont pas reconnue par le compilateur de l'IDE Arduino.
Donc, mon problème est simple.
J'utilise un écran LCD en I2C (2x16) dont la Librairie fonctionne parfaitement.
Mais je souhaiterais lui faire afficher des chaines plus longue que 16 caractères.
La seule solution est donc de faire un Crawll du texte (défilement de droite à gauche)
J'ai d'abord ecrit une bout de code pour essayer avec une boucle qui m'afficherait caractère par caractère :
Le problème est que ce code ne conviens pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include <Wire.h> #include "CLCD.h" CLCD lcd(0x00,16,2); char myStrings[]={"Test de Crawll texte pour affichur LCD 2 X 16"}; void setup() { lcd.init(); lcd.cursor_off(); lcd.setBacklight(1); Serial.begin(9600); } void loop() { int posCur = 0; lcd.setCursor(0,posCur); for (int i = 0; i < 16; i++){ lcd.print(myStrings[i]); lcd.setCursor(0,posCur = posCur +1); delay(500); } }
En effet, comme stipulé dans la doc de l'écran, il doit y avoir un delay de 100 mS après la commande qui affiche le texte.
Donc, le texte s’affiche lettre par lettre et ce délais rend l'affichage long et illisible car il n'efface pas les caractères suivant.
Donc le texte deviens illisible dès la 2eme boucle (non copié dans le code présenté).
La solution est donc ailleurs.
Et devrait donc ressembler a ca :
Définir la longueur de la chaine
Ajouter 16 espaces a cette chaine par une concaténation
Afficher les caractères :
De 1 à 16
De 2 à 17
De 3 à 18
Etc...
Si je fais cette concaténation avec 16 espace est pour qu'en fin de boucle, le texte continu à défiler en effaçant à chaque passage les caractères restants.
Le problème, est là est enfin ma question, comment faire pour couper ma chaine en partie de 16 caractères en décalant de 1 caractère à chaque passage de boucle ?
Merci pour votre aide
Cdlt
Yves
Partager