Donnerstag, 21. November 2024 11:10

Die Zahnputzuhr

damit die liebe Seele ruhe gibt...

 

Wer kennt das nicht? Jedesmal beim Zähneputzen kommt mein Sohn alle 30 Sekunden an und fragt: "Wie lange noch Papa?".

Da muß eine Änderung her....

In einem Euro-Shop ist mir dann diese tolle Eieruhr über den Weg gelaufen:

Die Faszination meines Sohnes war groß. 3 Minuten eingestellt und fleissig los geputzt...

Also alles bestens.... Irgendwie zu bestens... Kommentarlos wurden fleissig und auch schnell Zähne geputzt. Leider auch irgendwie zu schnell *grummel* Was ist denn jetzt da schon wieder schief gelaufen? *grummel* Der Fehler war jedenfalls schnell gefunden. Das Ding klingelt nämlich, wenn man drei Minuten einstellt, schon nach zwei Minuten... 

Gut, dem könnte man entgegen wirken, wenn man die einfach auf vier Minuten stellt. Dann klingelt die nämlich brav nach drei Minuten.

Aber....jetzt kommt das Aber... "Papa, Du mogelst!"..."Wieso?"..."Die Uhr steht auf vier Minuten und nicht auf drei!"... Wie die Diskussion weiter ging kann sich wohl jeder selber denken ;-)

Also irgendwie auch keine Lösung!!! *argh*

Also erst einmal der Sache auf den Grund gehen und die Uhr auseinander nehmen.

Nach ein paar Klingelversuchen war der Auslösemechanismus gefunden.

Insgesamt war das aber eine Scheiss-idee, die Uhr auseinander zu nehmen. Jetzt klingelt die nämlich sonstwann..... :-(

Nach etlichen Versuchen, das Teil wieder richtig zusammen zu setzen, habe ich jedenfalls aufgegeben....

Aber irgendwie war mir das Ding eh nicht elektronisch genug ;-)

Also wird ein anderer Weg eingeschlagen... es muß etwas mit LEDs und einem Microcontroller als Rechenknecht werden. Ja, ich weiß, irgendwie endet Alles immer mit einem Microcontroller ;-)

Die LEDs sollen die verbleibende Restputzzeit visualisieren. Die Rechenarbeit übernimmt ein Tiny26. Dieser wird dann später über einen Festspannungsregler aus einer 9V Blockbatterie gespeist. Den Tiny habe ich gewählt, weil er entsprechende Timer hat und auch mit einem internen RC Oszillator läuft. Gut, der wird nicht sonderlich genau sein, aber bei drei Minuten ist das zu vernachlässigen. Ein Taster steuert "Start", "Stop" und "Neustart".

Wärend der Verdrahtung in feinster Fädeltechnik sind mir dann noch so andere kleine Gimmiks eingefallen, die man ja noch unter bringen könnte.... wie wäre es mit einer seriellen Schnittstelle, mit der man dann die Zahnputzdaten auslesen kann und Statistiken führen könnte? Oder warum nicht gleich ein kleiner WEB-Server, mit dem man dann das ganze bequem übers Internet auswerten kann?

Ich merke schon, meine Ideen gehen wieder einmal mit mir durch ;-) Und da ich eh nicht vor hatte auch noch mein Klo zu verkabeln lasse ich das auch erst einmal ;-)

Da das lokale Wetter doch wieder mehr zum Basteln drinnen animiert als draussen die hohe Luftfeuchtigkeit zu geniessen muß dieses Projekt jetzt endlich einmal abgeschlossen werden ;-)

Also erst einmal die letzen Verbindungen zu Ende gefähdelt, und nun geht es ans Programm....

Die Hauptaufgabe des Controllers wird schlafen sein. Man muß ja auch die Batterie am Leben halten :-)
Der Taster liegt auf einem Interrupt, und soll erst einmal den Controller aus dem Schlaf erwecken. Danach sollen mal kurz zum Funktionstest alle LEDs leuchten, und danach soll das Ganze bei drei Minuten stehen bleiben bis der Taster gedrückt wird. Der soll den drei Minuten Countdown starten. Pause, Stopp und Ähnliches fallen der Optimierung zum Opfer, weil sie eh sinnlos sind. Es sollen drei Minuten Zähne geputzt werden, und dass am Stück, und nicht über den Tag verteilt ;-)
Also hab ich mir einen Taschenrechner geschnappt, und schon einmal den Timer durchgerechnet, der dann die 10 Sekunden vor gibt....

Die Frage ist eigentlich: Warum?

Der Controller hat 2kB Flash, und das nur um 10 LEDs blinken zu lassen?... Da ist Optimierung wirklich fehl am Platze ;-)
Die Idee mit Timern und so weiter hab ich verworfen, die wären eh voll daneben. Gut, ums nicht völlig Verschwenderisch zu gestalten, hab ich natürlich das Bit-Weiterschieben nach 10 Sekunden beibehalten, aber der Timer bleibt aus. Warten reicht völlig!!! Ob er das nun Interrupt gesteuert macht, oder die Zeit einfach so verschwendet bleibt nämlich egal ;-) Ein Problem bleibt allerdings mit dem Nulldurchlauf, also wenn alles fertig sein soll, das ist so nicht so schön realisierbar... Da mußte ich Mogeln ;-) Okay, der Optik wegen beträgt die Gesamtzeit jetzt drei Minuten und 2 Sekunden.... Aber *psssstttt* bis mein Sohn das raus hat, braucht er das Ding eh nicht mehr ;-)

Nochmal zur Verinnerlichung: Über den internen Oszillator läuft der Controller nicht sonderlich zeitgenau, das sollte aber bei drei Minuten deutlich unter dem Millisekunden Bereich liegen. Die paar Befehle, die abgearbeitet werden brauchen auch nur maximal wenige Millisekunden....

So hat sich ein kurzer, wenn auch nicht optimaler Quellcode ergeben (zum Download im Download-Bereich).

Das Ergebnis kann sich durchaus sehen lassen:

 

Taster drücken, und das Mopped initalisiert sich.... Nochmal auf den Taster gedrückt, und ein unerbärmlicher Countdown-Timer startet. ;-)

 Jedenfalls sind die ersten Probeläufe absolut positiv verlaufen....

Jetzt fehlt nur noch ein nettes Gehäuse, und wo zum Henker hab ich den Batterie-Clip gelassen?

- Projekt nicht abgeschlossen, Fortsetzung folgt -

Publiziert am: Freitag, 07. März 2008 (3679 mal gelesen)
Copyright © by Simons Page

Druckbare Version  Diesen Artikel an einen Freund senden

[ Zurück ]

 

2007 by Midnight

Seitenerstellung in 0.1764 Sekunden, mit 14 Datenbank-Abfragen