Forum: Mikrocontroller und Digitale Elektronik LaufText Arduino


von KoE (Gast)


Lesenswert?

1
lcd.begin(16, 2);
2
3
void loop() {
4
5
for(int a = 16, b=0; a >= 0-b; a--)
6
{
7
  int textlength = 4;
8
  b = textlength;
9
  lcd.setCursor(a, 1);
10
  lcd.print("TEST");
11
  lcd.setCursor(a+b,1);
12
  lcd.print("         ");
13
  delay(200);
14
}
15
 }

Ich möchte eine Laufschrift die von Rechts nach Links geht.
Das oberige Beispiel zeigt was ich möchte.

TEX|Txxxxxxx|xxx         ->> | = Displayrand
xxx|xxxxxxxT|EXT

Leider muss ich bei meinem Beispiel die Textlänge jedes mal eingeben 
damit er nachher die "zurückbleibenden" Buchstaben jedes mal wieder mit 
einem "Leerschlag" überschreibt.

Ich habe auch schon Probiert die for-Schleife ins z.b "a >= -16" laufen 
zu lassen aber dann fängt er an in der Oberen Zeile zu schreiben. Dies 
möchte ich auch nicht.
1
lcd.scrollDisplayLeft();
Wollte ich nicht benutzen da dann das ganze "Display" bzw die Obere und 
Untere Zeile verschoben werden.

Hat jemand eine bessere Lösung ? Oder einen anderen Lösungsansatz 
anzubringen ?


Mfg Koe

von renezimmermann (Gast)


Lesenswert?

Hallo,

erst Zeile komplett löschen und dann den String an der richtigen Stelle 
ausgeben? Ich benutze kein Arduino also nur ein Denkanstoß.
1
for(uint8_t spalte = 15, spalte, spalte--){
2
    lcd.setCursor(0,1);
3
    lcd.print(space(16));
4
    lcd.setCursor(spalte, 1);
5
    lcd.print("Test");
6
}

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

KoE schrieb:
> Hat jemand eine bessere Lösung ? Oder einen anderen Lösungsansatz
> anzubringen ?

 Ja.
1
lcd.begin(16, 2);
2
3
void loop() {
4
5
for(int a = 16, b=0; a >= 0-b; a--)
6
{
7
  lcd.setCursor(a, 1);
8
  lcd.print("TEST ");    // <= Hier
9
  delay(200);
10
}
11
 }

 OK ?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.