muss 9 textzeilen auf einem 2 zeiligen display ausgeben, wie mach ich das am besten? bis jetzt sind die textzeilen als #define zeile1 "Willkommen" #define zeile2 "beim Projekt der" .... ... definiert, mit jedem tastendruck wird die erste zeile rausgeworfen die zweite zeile wird raufgeschoben und die dritte zeile wird in der zweite zeile angezeigt beim nächsten tastdruck wird gleich vorgegangen 1. zeile weg zweite zeile raufschieben nächste zeile als zweite zeile einblenden, so schön so gut, bis jetzt mach ich das mit einer state-machine: switch(pressedkey) { case 0: show(0,0,zeile1); show(0,1,zeile2); break; case 1: show(0,0,zeile2); show(0,1,zeile1); break; und so weiter } die show funktion lautet wie folgt: show(uchar x, uchar y, uchar* string), aber das ist ja keine schöne lösung, gibt es keine möglichkeit je nachdem wie pressedkey aussieht die richtigen #defines zu nehmen und in zwei char reinzukopieren und dann mit auszugeben show(0,0,string1); show(0,1,string2); ???
const unsigned char strings[9][] = {"Willkommen", "beim Projekt der", ... }; In deinem Fall sind die defines ziemlich ünglücklich. Denn unter Umständen includet der Compiler an jeder Stelle wo du dein define verwendest den String und er sitzt somit mehrmals im Flash. Mit einem Array (kannst du ja per _attribute_ auch in den Flash legen) hast du beide Probleme gelöst, das Durchscrollen sowie die Codeoptimierung. for (i = 0; i < 9; i++) { show(0, 0, strings[i]); show(0, 1, strings[i+1]); warte_bis_der_benutzer_deine_taste_gedrueckt_hat(); } Um das Ende musst du dich nun selbst kümmern ;) Denn wenn beim 9. Schleifendurchlauf i gleich 8 ist, ergibt 8+1 eine 9 welche wiederum ausserhalb des Arrays liegt und Fehler verursachen könnte. Desweiteren kann ich nicht wissen ob der Text endlos oder nur einmal loopen soll.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.