Rullande text med Arduino och Adafruit TFT sköld (2 / 2 steg)
Steg 2: Hur det fungerar
I denna demo visas vi denna textsträng:
. . Text rullning med Adafruit TFT sköld... (47 tecken?)
Texten visas i rullning markeringsramen mode, stora bokstäver, med 18 tecken över skärmen.
Du kan ersätta texten med ett eget meddelande som du vill rulla över skärmen.
Hur fungerar skissen
-det mesta av arbetet i montering strängarna på tecken som ska visas görs i denna rad:
{
t += text.charAt ((offset + i) % text.length());
}
Om du förstår den linjen, behöver du inte någon ytterligare förklaring; Sluta läsa.
-fortsätter på
För alla andra, du måste förstå hur denna rutin fungerar eller det kommer inte vara intressant, så hålla läsande.
I denna förklaring kommer att vi använder ett enklare exempel, med en kortare text.
String text = "Hej" (som är 5 tecken).
Och vi kommer att definiera en kortare marquee display bredd.
CONST int bredd = 10;
Vårt mål är att visa dessa strängar efter varandra i teckenfönstret:
HelloHello
elloHelloH
lloHelloHe
etc.
För att hålla reda på använda var vi börja varje på varandra följande sträng vi variabeln "offset".
offset ökas på raden ändra startpunkten av visningssträngen.
för (int offset = 0; offset < text.length(); offset ++)
exempel:
HelloHello offset == 0
elloHelloH offset == 1
lloHelloHe offset == 2
och så vidare tills offset är lika med 5
Som nämnts ovan, offset håller reda på startpunkten av strängen.
Vi använder en slinga med räknaren jag montera resten av texten sträng varje gång texten visas.
för (int jag = 0; jag < bredd; i ++)
bredd är 10. Genom att stega igenom denna slinga kommer 10 gånger vi montera en sträng med tecken som är lika med bredden på fönstret marquee display som är 10 tecken. Vi gör allt detta innan du skriver ut texten på skärmen.
Nästa är den linje som nämns ovan som monterar sträng ett tecken i taget när vi går genom i loop:
t += text.charAt ((offset + i) % text.length());
Första gången genom denna loop t innehåller strängen H. Andra gången han- och så vidare, för de 10 iterationerna av slingan, varvid t håller HelloHello.
När slingan är klar, skriver skissen ut strängen till skärmen.
TFT.Print(t);
På den första iteration offseten == 0 och i == 0. text.length() == 5, som är längden på vår sträng.
Detta ger resultatet t += text.charAt(0 % 5);
0% 5 använder den modulo operatör %
modulo är resten när två heltal är indelade.
0 dividerat med 5 producerar resten 0.
Så resultatet av 0% 5 (Läs som 0 mod 5) är 0
Och text.charAt(0) är det första tecknet i strängen: H.
Andra gången genom denna slinga ökas jag till 1.
Resultatet av 1% 5 (eller 1 mod 5) är 1.
Detta kompletterar det andra tecknet, e, sträng t. t nu är han
Efter 10 upprepningar innehar t tecken HelloHello.
Vi skriver sedan ut t
TFT.Print(t);
Och sedan offset variabel ökas, vi går igenom i slingan igen, och vi monterar sträng elloHelloH. Displayen rullar!