Forum: Compiler & IDEs Laufschrift mit Atmega8515 in C


von Ah2k3 (Gast)


Lesenswert?

hi. habe hier folgendes problem und zwar habe ich eine led funkuhr mit 
sechs 7-segment anzeigen nach einem internet projekt nachgebaut.
einige codeschnipsel habe ich etwas abgeändert um zu einer bestimmten 
uhrzeit den feierabend als laufschrift anzuzeigen.


code:if((((bt.hour % 60) == 14) && ((bt.min % 60) <=15))
                &&
                  (((bt.sec % 60) > 47)))
            {  if((bt.sec % 60) == 48){
              set_led_digit(0, 0x00);
              set_led_digit(1, 0x00);
              set_led_digit(2, 0x00);
              set_led_digit(3, 0x00);
              set_led_digit(4, 0x00);
              set_led_digit(5, 0xE8);/*F*/
              set_led_digit(6, 0x00);  /*the dots*/
            }  if((bt.sec % 60) == 49){
              set_led_digit(0, 0x00);
              set_led_digit(1, 0x00);
              set_led_digit(2, 0x00);
              set_led_digit(3, 0x00);
              set_led_digit(4, 0xE8);/*F*/
              set_led_digit(5, 0xEc);/*E*/
              set_led_digit(6, 0x00);  /*the dots*/
            }  if((bt.sec % 60) == 50){
              set_led_digit(0, 0x00);
              set_led_digit(1, 0x00);
              set_led_digit(2, 0x00);
              set_led_digit(3, 0xE8);/*F*/
              set_led_digit(4, 0xEC);/*E*/
              set_led_digit(5, 0x12);/*I*/
              set_led_digit(6, 0x00);  /*the dots*/
            }  if((bt.sec % 60) == 51){
              set_led_digit(0, 0x00);
              set_led_digit(1, 0x00);
              set_led_digit(2, 0xE8);/*F*/
              set_led_digit(3, 0xEC);/*E*/
              set_led_digit(4, 0x12);/*I*/
              set_led_digit(5, 0xEC);/*E*/
              set_led_digit(6, 0x00);  /*the dots*/
            }  if((bt.sec % 60) == 52){
              set_led_digit(0, 0x00);
              set_led_digit(1, 0xE8);/*F*/
              set_led_digit(2, 0xEC);/*E*/
              set_led_digit(3, 0x12);/*I*/
              set_led_digit(4, 0xEC);/*E*/
              set_led_digit(5, 0x88);/*R*/
              set_led_digit(6, 0x00);  /*the dots*/
            }  if((bt.sec % 60) == 53){
              set_led_digit(0, 0xE8);/*F*/
              set_led_digit(1, 0xEC);/*E*/
              set_led_digit(2, 0x12);/*I*/
              set_led_digit(3, 0xEC);/*E*/
              set_led_digit(4, 0x88);/*R*/
              set_led_digit(5, 0x00);
              set_led_digit(6, 0x00);  /*the dots*/
            }  if((bt.sec % 60) == 54){
              set_led_digit(0, 0xEC);/*E*/
              set_led_digit(1, 0x12);/*I*/
              set_led_digit(2, 0xEC);/*E*/
              set_led_digit(3, 0x88);/*R*/
              set_led_digit(4, 0x00);
              set_led_digit(5, 0xFA);/*A*/
              set_led_digit(6, 0x00);  /*the dots*/
            }  if((bt.sec % 60) == 55){
              set_led_digit(0, 0x12);/*I*/
              set_led_digit(1, 0xEC);/*E*/
              set_led_digit(2, 0x88);/*R*/
              set_led_digit(3, 0x00);
              set_led_digit(4, 0xFA);/*A*/
              set_led_digit(5, 0xCE);/*B*/
              set_led_digit(6, 0x00);  /*the dots*/
            }  if((bt.sec % 60) == 56){
              set_led_digit(0, 0xEC);/*E*/
              set_led_digit(1, 0x88);/*R*/
              set_led_digit(2, 0x00);
              set_led_digit(3, 0xFA);/*A*/
              set_led_digit(4, 0xCE);/*B*/
              set_led_digit(5, 0xEC);/*E*/
              set_led_digit(6, 0x00);  /*the dots*/
            }  if((bt.sec % 60) == 57){;
              set_led_digit(0, 0x88);/*R*/
              set_led_digit(1, 0x00);
              set_led_digit(2, 0xFA);/*A*/
              set_led_digit(3, 0xCE);/*B*/
              set_led_digit(4, 0xEC);/*E*/
              set_led_digit(5, 0x8A);/*N*/
              set_led_digit(6, 0x00);  /*the dots*/
            }  if((bt.sec % 60) == 58){
              set_led_digit(0, 0x00);
              set_led_digit(1, 0xFA);/*A*/
              set_led_digit(2, 0xCE);/*B*/
              set_led_digit(3, 0xEC);/*E*/
              set_led_digit(4, 0x8A);/*N*/
              set_led_digit(5, 0x9E);/*D*/
              set_led_digit(6, 0x00);  /*the dots*/
            }  if((bt.sec % 60) == 59){
              set_led_digit(0, 0xFA);/*A*/
              set_led_digit(1, 0xCE);/*B*/
              set_led_digit(2, 0xEC);/*E*/
              set_led_digit(3, 0x8A);/*N*/
              set_led_digit(4, 0x9E);/*D*/
              set_led_digit(5, 0x00);
              set_led_digit(6, 0x00);  /*the dots */
            }

ich weiß das ganze müsste auch mit einer schleife zu realisieren sein 
allerdings reichen meine c kenntnisse nicht so weit :)
problem ist das die laufschrift zu langsam is
wie man im code erkennen kann rutscht der text jede sekunde einen 
schritt nach links.
ich würde das gern schneller machen sodass es "flüssig" wirkt.
nur wie? :)

von Matthias L. (Gast)


Lesenswert?

Dann entkoppel das Schieben von der Uhrzeit!

Starte das Scheieben einfach mit der Uhrzeit (14:15:00) und dann wird 
geschoben. Als Zeitbasis für das Schieben nimmst du einen internen 
Timer..

von Ah2k3 (Gast)


Lesenswert?

wenn cih wüsste wie das gehen würde.wär die frage hier nich drin :)
problem is halt das mein arbeitgeber mir nich die zeit gibt für sowas c 
zu lernen da das ganze ein azubi projekt ist.
und ich außer dieser uhr eh nich wirklich was mit der programmierung in 
c zu tun hab.

von Karl H. (kbuchegg)


Lesenswert?

Ah2k3 wrote:
> wenn cih wüsste wie das gehen würde.

Das kann dir hier auch keiner sagen.
Du musst den Uhrencode studieren. So wie dein jetziger Uhrencode
dir ein 1 Sekunden Signal gibt (über die Sekunden Variable), so wird
es wahrscheinlich irgendwo im Code noch ein 2.tes Signal geben.

Was ist denn zb. mit den beliebten blinkenden Punkten in deiner
Anzeige? Blinken die alle Sekunden oder alle halbe Sekunden?
Wenn das alle halbe Sekunde stattfindet, dann wäre das doch
ein Ansatzpunkt. Wenn nicht, dann wird es sicher irgendwas
anderes geben.
Wenn alle Stricke reissen, dann kann man immer noch einen freien
Timer dafür einsetzen, sich ein regelmässiges Signal zu erzeugen.
Aber auch hier wieder. Wir wissen nicht wie deine Uhr realisiert
ist und können daher nicht sagen, was da noch frei ist und was
man nehmen könnte.

> problem is halt das mein arbeitgeber mir nich die zeit gibt für sowas c
> zu lernen da das ganze ein azubi projekt ist.

Dann wirst du dich wohl damit zufrieden geben müssen was du hast.
Man kann keinen Motor bauen, wenn man nicht bereit ist (oder
sich die Zeit nimmt oder die Zeit gestellt bekommt) zu lernen
mit einer Feile umzugehen.

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.