ATtiny-Sonntagsspielereien
Aus BraLUG-Wiki
Inhaltsverzeichnis |
Motivation
Es gibt Tage, an denen man Langeweile hat und sich fragt, was könnte man denn heute für Blödsinn ausprobieren...
In der Folge werden einige von den Mini-Projekten beschrieben, die mir an solchen Tagen eingefallen sind. Es handelt sich um Dinge, die ich schon immer mal ausprobieren wollte oder wo mir zufällig Hardware zwischen die Finger gekommen ist, die auf eine Wiederverwertung nur gewartet hat. Mit Sicherheit sind es nicht die weltbewegenden Dinge und wurden bestimmt schon tausendmal ähnlich aufgebaut/programmiert. Mich haben die Geschichten aber für ein paar Stunden (manchmal auch ein paar Tage ;-)...) beschäftigt und waren teilweise auch sehr lehrreich. Vielleicht sind die Ergebnisse auch für andere interessant.
Grundsätzlich wurden alle, auf dieser Seite beschriebenen Projekte auf Basis eines ATtiny25/45/85 aufgebaut, von denen ich mir mal eine Hand voll gekauft hatte und in der großen Bastelkiste herumlagen.
RGB-LED
Mich hat schon immer interessiert, wie diese lustigen Lampen mit Glasfaserbüscheln, welche ständig die Farbe wechseln, funktionieren. Also mal eine RGB-LED besorgt und an einen ATtiny angeschlossen. Jeweils eine Farb-LED (mit entsprechendem Vorwiderstand) an einen Pin der MCU.
Programmseitig wird an jedem dieser Pins ein PWM-Signal zum auf- und abblenden jeder einzelnen Farbe generiert. Innerhalb einer Endlosschleife werden die verschiedensten Farbkombinationen erzeugt.
Lustiger Dauertest mit einer 4,5V-Flachbatterie: der Stromverbrauch der Schaltung ist so gering (ca. 1,5mA, wenn keine LED an ist und kurzzeitig ca. 20mA, wenn alle drei LEDs voll angesteuert sind), dass sie eine Ewigkeit im Dauerbetrieb funktioniert. Nach 7 Tagen wurde der Dauerbetrieb abgebrochen und die Flachbatterie war immer noch nicht am Ende...
1aus6-Würfel
Naja, wer dreidimensionale Würfel baut, muss dann auch mal einen kleinen 1aus6-Würfel in zwei Dimensionen zusammenbrutzeln. Folgende Dinge waren bei der Realisierung von Bedeutung:
- die sieben notwendigen LEDs so verschalten, zusammenfassen und ansteuern, dass dies auch auf einem 8-beinigen ATtiny möglich ist (wobei von den fünf möglichen I/O-Pins noch einer für einen Taster frei bleiben sollte)
- den Sleep-Mode des AVRs mal ausprobieren: im untersten Sleep-Mode (SLEEP_MODE_PWR_DOWN) verbraucht die Schaltung nur ca. 0,00026mA, kann also jahrelang mit einer Batterie fest verbunden bleiben
- die Sache mit den Zufallszahlen halbwegs richtig machen: ob es mir wirklich gelungen ist, habe ich noch nicht mit ausreichender statistischer Sicherheit überprüft....
Melodiegenerator
Melodiegeneratoren, Melodieklingeln usw. gibt es wie Sand am Meer! Ausschlaggebender Punkt für dieses Mini-Projekt war eine dieser nervenden Grußkarten, mit dem Lautsprecher kann man ja noch etwas anfangen..., dachte ich mir. Nachdem ich mich mit der Geschichte etwas beschäftigt hatte, bin ich dann doch einige Abende dran hängen geblieben.
Am interessantesten fand ich die Frage nach den gängigen Musik-Formaten, also die Kodierung der Meldodie in einer "rechnerlesbaren" Form. Für mich als Notenlaien war das schon eine gewisse Herausforderung. Am schönsten und verständlichsten fand ich das RTTTL-Format, mit dem auch Nokia seine Klingeltöne für Handys kodiert. Entstanden ist ein (fast) vollständiger Parser auf dem ATtiny für dieses Format. Lustig war auch die Diskussion mit meinen Kindern, die beide die Musikschule besuchen: Wie berechnet man denn nun die Länge eines Tones? Beide meinten, dass man das nicht so genau sagen kann, denn es kommt ja auf die Stimmung des Musikers an...! Aber ich habe mich nicht beirren lassen und hoffe es halbwegs richtig implementiert zu haben.
Nebenbei hatte ich dann auch endlich mal den Antrieb, mich ausgiebig mit dem Auslesen von Daten aus dem Programm-Flash des Mikrocontrollers zu beschäftigen, in dem die einzelnen Musikstücke abgelegt sind. Im obigen Quelltext sind vier Melodien enthalten, das übersetzte Programm benötigt ca. 2500 Byte des Flash-Speichers. Bleibt also noch genug Platz, um weitere Stücke einzubinden, wenn man z.B. einen ATtiny85 mit 8kByte Flash verwendet. Genug Auswahl ist ja im Internet vorhanden, wie z.B. auf dieser Webseite.
Kontakt
Ich, Uwe, bin jederzeit an weiteren lustigen Ideen in dieser "Kategorie" interessiert.