Arduino LED Display (11 / 12 steg)
Steg 11: Exempel - enda rullande Text
Denna tid vi kommer att Visa området som innehåller text som kommer att rulla
från vänster till höger.
Så att inte analysera koden (Arduino skiss):
Display * disp;
ScrollingText8x8 * meddelande;
CONST char * Belong;
void setup() {
util_setup();
log_setup();
SS = createSS();
Disp = ny uppvisning (8, 3, ss);
Disp -> setup();
meddelande = nya ScrollingText8x8 (disp, 48, 50, 5);
meddelande -> init();
Belong = "Detta är ett exempel på flera scorlling områden.");
meddelande -> Bläddra (8, 8, ScrollingText8x8::LOOP, Belong);
}
void loop() {
util_cycle();
log_cycle();
meddelande -> cycle();
Disp -> flush();
}
Initiering av displayen är densamma som i exemplen ovan, så det utelämnas här.
Vi använder ScrollingText8x8 för att rullande text ska visas. I setup() vi skapa instans av den här klassen och ringer metod scroll(...). Denna del bara initierar rullning, men spela inte upp animeringen själv. För att spela upp animeringen du måste ringa cycle() och flush() i huvudloop och du får inte ha några ytterligare förseningar där, annars kan du få taggiga animation.
Under skapandet av ScrollingText8x8 har vi tillhandahållit hastighet av animation - egentligen är det en fördröjning av 50 ms per bildruta. Nu kommer att ringer cycle() i huvudloop producera bildrutorna i animeringen enligt medföljande dröjsmål. När tiden kommer metoden cycle() kommer att uppdatera exempel och slutligen metoden flush() skickar uppdaterat innehåll till MAX marker.
Den förbrukar CPU bara när det finns något att göra hela genomförandet av ScrollingText8x8 är icke blockerande. Internt använder det enkla tillståndsdator.
En sista sak: du måste hålla text som används för animation i global variabel för att undvika sophämtning. Det kopieras inte i scroll() att undvika minne fragmentering.