Elektronisches Metronom
Aus BraLUG-Wiki
(→Hardware) |
(→Software) |
||
Zeile 23: | Zeile 23: | ||
=Software= | =Software= | ||
+ | |||
+ | ''Programmquelltext kommt noch...'' | ||
+ | |||
In der Hauptschleife des Programmes erfolgt lediglich die Abfrage der 3 Taster mit den entsprechenden Reaktionen auf deren Betätigung. Die eigentliche Steuerung erfolgt in den 3 Timern des ATmega8: | In der Hauptschleife des Programmes erfolgt lediglich die Abfrage der 3 Taster mit den entsprechenden Reaktionen auf deren Betätigung. Die eigentliche Steuerung erfolgt in den 3 Timern des ATmega8: | ||
* Timer0: Ansteuerung der 7-Segment-Anzeige im Multiplex-Betrieb | * Timer0: Ansteuerung der 7-Segment-Anzeige im Multiplex-Betrieb |
Version vom 5. Juni 2009, 08:49 Uhr
Inhaltsverzeichnis |
Motivation
Als ich letztens mal wieder eines meiner kleinen Mikrocontroller-Projekte in der Familie vorführte, meinte mein Sohn, dass ich doch auch mal etwas "sinnvolles" bauen könnte. Er spielt seit einem halben Jahr ernsthaft Gitarre und brauchte zum Üben ein Metronom. Ob er es nun ernst meinte, weis ich nicht, aber sein Geburtstag war nur noch 14 Tage entfernt und ich musste mich beeilen. Da ich sowieso gerade etwas Elektronikmaterial im Internet bestelle wollte (... nein ich nenne jetzt nicht meinen Lieblingslieferanten...), also schnell eine Schaltung entwickelt, die Einkaufsliste entsprechend erweitert und auf den Kauf-Button geklickt. Das Paket kam 3 Tage später an.
Die Schaltung war schnell aufgebaut und zum Glück hatte ich eine längere Zugfahrt vor mir, wärend der ich mich um die Programmierung des Mikrocontrollers kümmern konnte.
Übermorgen ist es soweit, da hat mein Sohn Geburtstag. Mal sehen, ob er sich an seinen kurzen Spruch noch erinnern kann... :-)
Hardware
Die Hardware weist keine Besonderheiten auf. Kernstück ist ein ATmega8, welcher folgende Peripherie ansteuert:
- eine 4-stellige 7-Segment-LED-Anzeige
- einen (passiven) Piezo-Summer
- 3 Taster zur Takt-Wahl und zum Ein-/Ausschalten des Gerätes
Die Stromversorgung erfolgt über eine 9V-Batterie, deren Spannung auf 5V runtergeregelt wird.
Falls die Lautstärke des Takttones zu leise ist (ich warte erstmal die Meinung meines Sohnes ab), muss noch ein Treibertransistor vor dem Piezo-Summer eingebaut werden. Entweder verbindet man dann den Kollektorzweig an die 9V Rohspannung oder sieht parallel zum Summer eine Spule vor.
Der Mikrocontroller wird derzeit über seinen internen RC-Oszillator getaktet. Falls die Genauigkeit doch nicht ausreicht (man weis ja nie, wie empfindlich das Musikerohr ist...), könnte man noch einen externen Quarz nachrüsten, die entsprechenden Pins des Controllers sind dazu extra nicht mit anderer Peripherie beschaltet worden.
Software
Programmquelltext kommt noch...
In der Hauptschleife des Programmes erfolgt lediglich die Abfrage der 3 Taster mit den entsprechenden Reaktionen auf deren Betätigung. Die eigentliche Steuerung erfolgt in den 3 Timern des ATmega8:
- Timer0: Ansteuerung der 7-Segment-Anzeige im Multiplex-Betrieb
- Timer1: Generierung des Takttones via CTC-Mode und Toggeln des entsprechenden Ausgabe-Pins
- Timer2: Zeitnormal zur Steuerung des Metronom-Taktes
Also eigentlich nichts spannendes, aber für mich eine gute Programmierübung, bei der ich mal wieder einiges über Timer-Programmierung gelernt habe.
Bedienung
Die Bedienung des Gerätes gestaltet sich recht einfach und (hoffentlich) anwenderfreundlich. Die Bedienelemente bestehen aus 3 Tastern:
- Taster 1 und 2: mit ihnen kann der gewünschte Bpm-Wert (Beats pro Minute) eingestellt werden (erhöhen bzw. erniedrigen); Bereich 40...240 Bpm
- Taster 3: Ein- und Aus-Taster (die Schaltung wird im Aus-Zustand in einen Stromsparzustand versetzt)
Auf dem Display wird der momentan eingestellte Bpm-Wert ausgegeben. Zusätzlich zum Signalton, blinkt die erste Stelle der Anzeige im eingestellten Takt.