Ich möchte gerne einen Text vom rechten Rand ins LCD scrollen lassen. Dabei dachte ich mir müßte das ja simpel mit einer for-Schleife funktionieren:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
Nur tuts das nicht. Wieso? Weil der Text über das Display hinaus geht?
|
Anzeige
|
LCD LaufschriftIch möchte gerne einen Text vom rechten Rand ins LCD scrollen lassen. Dabei dachte ich mir müßte das ja simpel mit einer for-Schleife funktionieren:
Nur tuts das nicht. Wieso? Weil der Text über das Display hinaus geht? Manfred W. schrieb:
> Nur tuts das nicht. Wieso? Weil der Text über das Display hinaus geht?
Davon kannste wohl ausgehen.. Bei einem mehrzeiligen Display geht's
vermutlich einfach in der naechsten Zeile weiter...
Vlker
Manfred W. schrieb:
> Nur tuts das nicht.
und wieder ein Kandidat für die Fehlerbeschreibung des Monats!
Klaus Wachtler schrieb: > Manfred W. schrieb: >> Nur tuts das nicht. > > und wieder ein Kandidat für die Fehlerbeschreibung des Monats! Dachte ich bin schon ganz obenn :)
Gast
#1599586
for(int x=15;x<=0;x--) vielleicht eher for(int x=15;x>=0;x--) @ Manfred W.: zumindest auf dem besten Weg :-) Die Konkurrenz ist noch stark... MagIO schrieb: > vielleicht eher > for(int x=15;x>=0;x--) Vielleicht.. aber die Loesung wird auch das nicht sein! ;) Volker
Gast
#1599605
Wieso nicht? Solange die Bedingung nicht true ist, wird die for-Schleife nichts machen, oder? Hallo Klaus, anbei ein Beispiel von Laufschrift, analisiere bitte, main.c und lcd-routines.c (hier ganz unten), vergleiche es mit dein Code und vielleichst wird dann gehen! Gruß Martin MagIO schrieb: > Wieso nicht? Solange die Bedingung nicht true ist, wird die for-Schleife > nichts machen, oder? Nene, Dein Einwurf war schon korrekt... Loest aber eben nur ein Teil des Problems. Volker Volker Schulz schrieb: > MagIO schrieb: >> vielleicht eher >> for(int x=15;x>=0;x--) > > Vielleicht.. aber die Loesung wird auch das nicht sein! ;) > > > Volker Funktioniert doch. Wo ist das Problem? Manfred W. schrieb: > Funktioniert doch. > Wo ist das Problem? Hatte ich doch schon geschrieben: Wenn Du Zeichen ueber die Zeilenbreite hinaus schreibst, tauchen sie in der naechsten Zeile auf (jedenfalls bei einem industriestandard-kompatiblen Controller). Volker Martin e. C. schrieb:
> Hallo Klaus,
Sorry, wollte Manfred W. schreiben nicht Klaus!
Gast
#1599622
Kommt darauf an welches Display er hat. Mit nem 4x16(4x20) wirds wohl in die nächste Zeile reinschreiben. Mit nem 2x16 sollte es gehen, da dort 2 Screens ins RAM passen. Es sei denn lcd_puts macht den Zeilenumbruch automatisch, da kenne ich mich nicht aus ... ich hab meine Displays momentan mit nem Propeller am Start. Nagut, dann verschieben wir DAS Problem auf einen spaeteren Zeitpunkt (Wenn Manfred ein 4-Zeilen Display gekauft hat oder tatsaechlich mal Gebrauch vom zweiten Screen machen will). ;) Volker
Gast
#1663679
Also bei meiner Laufschrift lässt sich die Länge der Zeichen einstellen.
Vll hilft das ja weiter. Mein Problem ist nur, dass dieses
_delay_ms(300) in einer Schleife den Prozessor natürlich voll auslastet.
Weiß da evtl. jemand wie man das beseitigen könnte?
void lcd_write_rot(int row, int cal, char* pText, int laenge)
{
int offset=0;
for(int i=0;i<strlen(pText)-laenge+1;i++)
{
for(int j=i;j<laenge+i;j++)
{
lcd_goto(row,cal+offset);//Zeichenposition setzen
lcd_write(pText[j]); //Zeichen schreiben
offset++;
}
offset=0;
_delay_ms(300);
}
}
Holland schrieb: > Also bei meiner Laufschrift lässt sich die Länge der Zeichen einstellen. > Vll hilft das ja weiter. Mein Problem ist nur, dass dieses > _delay_ms(300) in einer Schleife den Prozessor natürlich voll auslastet. > Weiß da evtl. jemand wie man das beseitigen könnte? So wie alle _delays beseitigt werden: Mit einem Timer, der einen Basistakt erzeugt und völliger Umstrukturierung der Problemlösestrategie. Weg von: Ich erledige eine Aufgabe indem ich morgends anfange und abends aufhöre. Hin zu: Ich habe einen Zeittakt und und seh mir bei jedem Ticken dieser Uhr an, was es jetzt gerade zu tun gibt. In dem Fall: Weg von for-Schleifen Hin zu: Es ist eine 1/3 Sekunde vergangen, welcher Text muss jetzt aufs Display
Gast
#1664007
danke... so funktionierts jetzt auch schön ohne den Prozessor ständig voll auszulasten ;) wen es noch interessiert.. so siehts jetzt aus (i wird alle 300ms von einem timerinterrupt inkrementiert)
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|