Stap 11: Voorbeelden - Single lichtkranttekst
Ditmaal gaan we gebied met tekst waarin een schuifbalk wordt weergegeven
van links naar rechts.
Opdat analyseren code (Arduino sketch):
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(); }
De initialisatie van het display is hetzelfde als in de voorbeelden hierboven, dus het wordt hier weggelaten.
We gebruiken ScrollingText8x8 om weer te geven van de lichtkranttekst. Wij zijn in Setup instantie van deze klasse te maken en het aanroepen van de methode scroll(...). Dit deel alleen initialiseert schuiven, maar speelt niet de animatie zelf. Om te spelen de animatie die u moet bellen cycle() en flush() in de hoofdlus en u moet niet daar eventuele extra vertragingen, anders kan je gekartelde animatie.
Tijdens het maken van ScrollingText8x8 hebben we gegeven snelheid van de animatie - eigenlijk is het een vertraging van 50 MS per frame. Nu zal bellen cycle() in de hoofdlus frames van animatie volgens verstrekte vertraging produceren. Wanneer de tijd de cycle() methode komt zal knop Voorbeeld bijwerken en ten slotte de methode flush() stuurt bijgewerkte inhoud naar MAX chips.
De hele uitvoering van ScrollingText8x8 is niet blokkeren en het CPU verbruikt alleen als er iets moet gebeuren. Intern het met behulp van eenvoudige State Machine.
Er is een laatste ding: je moet houden van de tekst die wordt gebruikt voor animatie in globale variabele teneinde de huisvuilinzameling. Het wordt niet gekopieerd in scroll() om te voorkomen dat fragmentatie van het geheugen.