Datum: 16.05.2008 10:27
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? :)
Datum: 16.05.2008 10:40
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..
Datum: 16.05.2008 11:28
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.
Datum: 16.05.2008 11:33
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.
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel