Zum Aufspielen des Sketches auf den Tiny85 wird ein ISP-Programmer benötigt. Im einfachsten Fall reicht dazu ein bestehender Arduino (z.B. Arduino UNO) und ein Steckbrett. Weiterhin muss in der Arduino IDE der passende Core installiert werden damit die IDE den ATTiny85 unterstützt. Eine Anleitung für diese Dinge findet sich [http://highlowtech.org/?p=1695 hier].
Da die Hardware keinen RC-Tiefpass vorsieht muss die Messung des LED-Stroms mit der PWM synchronisiert werden''('''Hinweis:''' Der Sketch sollte auch auf einem ATTiny25 bzw. ATTiny45 lauffähig sein, d.h. die Messung des LED-Stroms muss während des High-Teils des PWM Zyklus durchgeführt werden. Damit dies problemlos funktioniert wird der Timer1 so eingestellt, dass sich eine PWM-Frequenz wurde von ~245Hz ergibt und somit bereits bei vergleichsweise niedrigen Duty Cycles ausreichend Zeit für die Strommessung übrig bleibtmir aber bisher nicht getestet. Die Messung des Stroms erfolgt im Overflow-Interrupt des Timer1. Ab Falls jemand das mal auf einem Duty-Cycle von ca. 20/255 ergeben sich stabile und korrekte Messwerte. Der gemessene Wert kann nun in den momentanen Maximalstrom der LED umgerechnet werden und über den vorgegebenen Soll-Strom in den neuen Duty-Cycle umgerechnet werdendieser Controller testen möchte bitte ich um einen entsprechenden Eintrag hier.)''
Der Da die Hardware keinen RC-Tiefpass vorsieht muss die Messung des LED Strom wird in etwa alle 4 Sekunden gemessen-Stroms mit der PWM synchronisiert werden, d. Nach jeder h. die Messung des LED-Stroms muss während des High-Teils des PWM Zyklus durchgeführt werden. Damit dies problemlos funktioniert wird der Timer1 so eingestellt, dass sich eine PWM -Frequenz von ~245Hz ergibt und somit bereits bei vergleichsweise niedrigen Duty cycle neu berechnet. Anschließend erfolgt Cycles ausreichend Zeit für die Strommessung übrig bleibt. Die Messung der Batteriespannungdes Stroms erfolgt im Overflow-Interrupt des Timer1. Bei unterschreiten eines Schwellwerts wird die Lampe abgeschaltetAb einem Duty-Cycle von ca. 20/255 ergeben sich stabile und korrekte Messwerte. Der gemessene Wert kann nun in den momentanen Maximalstrom der LED umgerechnet und über den vorgegebenen Soll-Strom in den neuen Duty-Cycle umgerechnet werden.
''('''Hinweis''': Der Teil des Codes LED Strom wird etwa alle 4 Sekunden gemessen. Nach jeder Messung wird der sich mit der Berechnung des PWM Duty Cycles sowie der Spannungsüberwachung beschäftigt verwendet derzeit noch Fließkommazahlen (double)cycle neu berechnet. Dies ist ineffizient und führt zu größeren Binaries. Ich werde diesen Teil des Codes in Anschließend erfolgt die Messung der Zukunft noch auf Integer umschreiben, danach sollte auch ein Tiny25 funktionieren.Batteriespannung.Bei unterschreiten eines Schwellwerts wird die Lampe abgeschaltet.)''
Beim Taster wird zwischen kurzen (50-500ms) und langen (>500ms) Tastendrücken unterschieden.
Lange Tastendrücke schalten die Lampe ein bzw. aus. Beim Einschalten wird ebenfalls zunächst die Batteriespannung überprüft, die Lampe lässt sich unterhalb des Schwellwerts nicht einschalten.
''TODO'[[Medium: Sketch hochladenFlaschenlampe_Tiny85.tar.gz|Source als TAR/GZ Archiv]]'''
== Aufbau ==