Etape 11 : Exemples - simple texte défilant
Cette fois nous allons afficher la zone contenant le texte qui défile
de gauche à droite.
Peur qu’analyse du code (Arduino croquis) :
Display *disp;ScrollingText8x8 *message; const char *textMessage; void setup() { util_setup(); log_setup(); ss = createSS(); disp = new Display(8, 3, ss); disp->setup(); message = new ScrollingText8x8(disp, 48, 50, 5); message->init(); textMessage = "This is an example of multiple scorlling areas ;)"; message->scroll(8, 8, ScrollingText8x8::LOOP, textMessage); } void loop() { util_cycle(); log_cycle(); message->cycle(); disp->flush(); }
L’initialisation de l’affichage est le même comme dans les exemples ci-dessus, donc il est omis ici.
Pour afficher le texte défilant, nous utilisons ScrollingText8x8. Dans setup() nous créons l’instance de cette classe et appeler la méthode scroll(...). Cette partie n’initialise le défilement, mais ne joue pas de l’animation elle-même. Pour jouer l’animation vous devez appeler cycle() et flush() dans la boucle principale et vous ne devez pas tout retard supplémentaire là, sinon vous risquez d’obtenir une animation en escalier.
Lors de la création de ScrollingText8x8, nous avons fourni la vitesse d’animation - en fait il y a un retard de 50ms par image. Maintenant appelant cycle() dans la boucle principale va produire des images d’animation selon le délai prévu. Le moment venu la cycle() méthode affichage de mise à jour et enfin la méthode flush() sera enverra contenu mis à jour pour les puces de MAX.
L’implémentation entière de ScrollingText8x8 est non bloquant et il consomme UC lorsqu’il y a quelque chose à faire. Il utilise en interne simple State Machine.
Il y a une dernière chose : vous devez garder le texte utilisé pour l’animation dans la variable globale afin d’éviter l’opération garbage collection. Il n’est pas être copié dans scroll() d’éviter la fragmentation de la mémoire.