Quarki
25.03.2010, 12:27
Hallo, ich bin dabei mir den Asuro als eine digitaluhr einzurichten, die die Uhrzeit auf Knopfdruck anzeigt. Das klappt bisher auch schon ganz gut. Ich kann zwar die Uhrzeit noch nicht einstellen, aber es ist möglich die vergangene Zeit seit dem einschalten anzeigen zu lassen und auch abzulesen. Dabei ist mir aufgefallen, dass die Uhr leider etwas falsch geht. Ich hatte den ASURO exakt 8 Stunden und 8 Minuten laufen lassen, die angezeigt Zeit war allerdings 8 Stunden und 9 Minuten und 18 Sekunden. Das bedeutet, dass in den von Asuro gemessenen 1000 Millisekunden in wirklichkeit nur 977,3431 Millisekunden um sind.
Das ist aber meine erste und einzige Messung dazu und ich bin mir nicht sicher, ob dieser Wert konstant ist, oder sich evtl mit Tastendrücken und Batterieabnutzung verändert. Unerklärlicherweise klappt die Anzeige der Minuten nicht, wenn ich bei 7 Minuten bin, dann werden seltsamerweise die Sekunden angezeigt. Wenn ich raten müsste woran es liegt würde ich die Taster vermuten, und zwar dass Taster 2 dann su tut als wäre er Taster 1.
Das waren die aufgetauchten Probleme.
Nun zur Anzeige der Uhrzeit:
Zur Zeit verwende ich den timebase Wert aus Gettime(), habe eine Time Struktur erzeugt, die die Zeitwerte von Minuten, Sekunden, Stunden und Tage speichert und zähle diese automatisch immer mit hoch, wenn eine Sekunde um ist, die Sekunden, wenn 60 Sekunden um sind die Minuten usw. Dabei achte ich auf Überzählige Millisekunden, Sekunden usw. die ich mit Berücksichtige.
Wenn keine Taste gedrückt ist, blinkt die Frontlampe: alle 500 ms wechselt sie zwischen an und aus. Drücke ich den rechten Taster (von hinten) werden die Sekunden angezeigt, beim zweiten Taster die Minuten, dritten Stunden und vierten Tage.
Die Anzeige eines Wertes erfolgt binär mit Hilfe der LED's:
1 FrontLED
2 BackLED links
4 BackLED rechte
8 StatusLED rot
16 StatusLED grün
Das sind aber leider nur 5 Bit, so dass ich mir etwas einfallen lassen musste, um bis zu 60 Sekunden und bis zu 60 Minuten anzeigen zu können. Er zählt von 1 bis 30 normal hoch, wechselt dann in den "Blink-Modus" und fängt dann blinkend wieder bei 1 an, so dass Zahlen ab 31 daran erkannt werden, dass sie blinken.
Zeit und Wecker werde ich demnächst noch programmierbar (per Tastendruck) hinzufügen.
Ich würde mich freuen, wenn ihr das Programm runter lädt und prüft, wie das Programm bei euch läuft. Ob es auch Probleme mit der Anzeige gibt, ob der ASURO auch falsch die Zeit misst, usw.
Testen ist erlaubt! ;)
Wenn ich die Programmierbarkeit von Uhrzeit und Wecker hinzugefügt habe, gebe ich auch gerne mal den Quellcode raus.
Ich hoffe auf viele Antworten, Tipps und konstruktive Kritik!
=P~
Quarki
P.S.: Fortsetzung des Kommentars zum Download:
... (unsigned long timebase Limitüberschreitung noch nicht abgefangen, wäre aber kein Problem, das nach einem Tag zurück zu setzen. Das folgt in späteren Versionen.)
Das ist aber meine erste und einzige Messung dazu und ich bin mir nicht sicher, ob dieser Wert konstant ist, oder sich evtl mit Tastendrücken und Batterieabnutzung verändert. Unerklärlicherweise klappt die Anzeige der Minuten nicht, wenn ich bei 7 Minuten bin, dann werden seltsamerweise die Sekunden angezeigt. Wenn ich raten müsste woran es liegt würde ich die Taster vermuten, und zwar dass Taster 2 dann su tut als wäre er Taster 1.
Das waren die aufgetauchten Probleme.
Nun zur Anzeige der Uhrzeit:
Zur Zeit verwende ich den timebase Wert aus Gettime(), habe eine Time Struktur erzeugt, die die Zeitwerte von Minuten, Sekunden, Stunden und Tage speichert und zähle diese automatisch immer mit hoch, wenn eine Sekunde um ist, die Sekunden, wenn 60 Sekunden um sind die Minuten usw. Dabei achte ich auf Überzählige Millisekunden, Sekunden usw. die ich mit Berücksichtige.
Wenn keine Taste gedrückt ist, blinkt die Frontlampe: alle 500 ms wechselt sie zwischen an und aus. Drücke ich den rechten Taster (von hinten) werden die Sekunden angezeigt, beim zweiten Taster die Minuten, dritten Stunden und vierten Tage.
Die Anzeige eines Wertes erfolgt binär mit Hilfe der LED's:
1 FrontLED
2 BackLED links
4 BackLED rechte
8 StatusLED rot
16 StatusLED grün
Das sind aber leider nur 5 Bit, so dass ich mir etwas einfallen lassen musste, um bis zu 60 Sekunden und bis zu 60 Minuten anzeigen zu können. Er zählt von 1 bis 30 normal hoch, wechselt dann in den "Blink-Modus" und fängt dann blinkend wieder bei 1 an, so dass Zahlen ab 31 daran erkannt werden, dass sie blinken.
Zeit und Wecker werde ich demnächst noch programmierbar (per Tastendruck) hinzufügen.
Ich würde mich freuen, wenn ihr das Programm runter lädt und prüft, wie das Programm bei euch läuft. Ob es auch Probleme mit der Anzeige gibt, ob der ASURO auch falsch die Zeit misst, usw.
Testen ist erlaubt! ;)
Wenn ich die Programmierbarkeit von Uhrzeit und Wecker hinzugefügt habe, gebe ich auch gerne mal den Quellcode raus.
Ich hoffe auf viele Antworten, Tipps und konstruktive Kritik!
=P~
Quarki
P.S.: Fortsetzung des Kommentars zum Download:
... (unsigned long timebase Limitüberschreitung noch nicht abgefangen, wäre aber kein Problem, das nach einem Tag zurück zu setzen. Das folgt in späteren Versionen.)