Laufschrift auf nem GLCD (64 x 128)

Gast #5289191
Lesenswert?

Moin Moin,

ich habe gerade so ein paar Logik Probleme.
Gerade weiß ich nicht so genau wie Ich anfangen soll.

Der String sollte von rechts(128) nach links(0) scrollen..

Kann mir jemand auf die Sprünge verhelfen?
1
  char msg[] = "Last Message from WSQ3000";
2
  
3
  for(int x = 128 ; x>0 ; x--)
4
  {
5
    glcdGotoXY( row, x);
6
    _delay_ms(100);
7
  }
Gast #5289216
Lesenswert?

UnderDog schrieb:
> Kann mir jemand auf die Sprünge verhelfen?
>
> char msg[] = "Last Message
> from WSQ3000";
>
>   for(int x = 128 ; x>0 ; x--)
>   {
>     glcdGotoXY( row, x);
>     _delay_ms(100);
>   }

Yep:
Mache dir ein Konzept (nicht Programm) wie das überhaupt ausschauen 
soll, denke Dir das aus, bringe es mit Bleistift auf Papier.
Was hast Du bisher:
- Ein Array mit dem Text
- Eine For-Schleife die einmal durchlaufen wird
- Eine Subroutine die (dem Namen nach) den Cursor im LCD positioniert
- Eine Zeitverzögerung

Was willst Du?
- Eine unendlich Schleife
- die den Text auf das Display schreibt

Fange doch mal erst an den Text auf das Display auszugeben.
Dann mache das unendlich.
Dann verschiebe den Text.
Dann wiederhole das ganze wenn der Text rausgeschoben wurde.

rgds

rgds
#5289243
Lesenswert?

Hier würde der Text von rechts reinlaufen bis er dann ganz links steht. 
Wenn du möchtest, dass der Text dann auch noch links wieder raus läuft 
müsstest du das noch nach der for-Schleife einbringen, also Textlänge 
bestimmen und dann gehts eigentlich ähnlich weiter wie schon beim 
Reinlaufen lassen.
1
char msg[] = "Last Message from WSQ3000";
2
  
3
  for(int x = 128 ; x>0 ; x--)
4
  {
5
    glcdGotoXY( row, x);
6
    uint8_t cursor_position = x;
7
    uint8_t i=0;
8
    lcd_clear_line(row);
9
    while(i < 128 && cursor_position < 128 && msg[i] != '\0'){
10
      glcd_put_char(msg[i]);
11
      i++;
12
      cursor_position++;
13
    }
14
    _delay_ms(100);
15
  }
16
...
17
void glcd_clear_line(uint8_t line){
18
  glcdGottoXY(line, x);
19
  for(uint8_t i=0;i<128;i++){
20
    glcd_put_char(" ");
21
  }
22
}
Gast #5289310
Lesenswert?

M. K. schrieb:
> char msg[] = "Last Message from WSQ3000";
>
>   for(int x = 128 ; x>0 ; x--)
>   {
>     glcdGotoXY( row, x);
>     uint8_t cursor_position = x;
>     uint8_t i=0;
>     lcd_clear_line(row);
>     while(i < 128 && cursor_position < 128 && msg[i] != '\0'){
>       glcd_put_char(msg[i]);
>       i++;
>       cursor_position++;
>     }
>     _delay_ms(100);
>   }


Hier wird der Text einfach nacheinander in das Display geschrieben. Von 
links nach rechts.. nichts mit scrollen..

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren