Sparrow-Anwendung: Tonausgabe für Weihnachtskrippe
von Hermann Nieder
Die abgebildete Weihnachtskrippe erhält in diesem Jahr eine „verborgene“ elektronische Schaltung,
die eine bekannte Weihnachtsmelodie erklingen lässt, wenn die Enkelkinder (oder auch die Erwachsenen)
eine bestimmte Taste am Rand er Krippe betätigen. Im Dezember des vergangenen Jahres wurde auf diesen
Seiten bereits ein Beitrag von H. Fritzsch über ein
Sparrow-Projekt mit „Weihnachtsmusik“
veröffentlicht. Ich konnte also für das Krippenprojekt einen Teil des ursprünglichen Programmlistings verwenden und das
aktuelle Programm ebenfalls in Bascom AVR gestalten.
'************************************************************************ '* Weihnachtsmelodie in Anlehnung an Version 2.0 H. Fritzsch 12 / 2014* '* PortB.1 --> Piezo '* geaendert fuer Melodie von "Ihr Kinderlein kommet.." * '* PortB.3 wird waehrend des Abspielens ein- und danach ausgeschaltet '* Nur wenn Taste S2 gedrueckt wird, wird die Melodie gespielt. * '************************************************************************ $regfile "attiny13.dat" $crystal = 9600000 $hwstack = 16 $swstack = 8 $framesize = 16 Config Portb = &B00011010 'PB1, PB3 und PB4 Ausgaenge Config Timer0 = Timer , Compare B = Toggle , Prescale = 8 , Clear Timer = 1 'CTC Mode aktiv Portb.2 = 1 'Pullup fuer Taste S2 ' Tondefinitionen Const C = 70 Const D = 63 Const E = 55 Const F = 52 Const G = 47 Const A = 42 Const H = 38 Const C# = 34 Const D# = 29 Const E# = 27 Const F# = 25 Const G# = 23 Const A# = 20 Const H# = 18 Const C## = 35 Const H## = 38 Const Ruhe = 0 ' Tonlaengen Dim Achtel As Byte Dim Viertel As Byte Dim Halb As Byte Achtel = 25 Viertel = 50 Halb = 100 Do 'Piezo-Schallgeber an PORTB.1 'Taster an PORTB.2 Pwm0a = 0 If Pinb.2 = 0 Then Portb.3 = 1 ' Melodieteil "Kinderlein" 2 x ' hintereinander abspielen Gosub Kinderlein Gosub Kinderlein '"Rest" der Melodie abspielen Gosub Weiter Portb.3 = 0 Pwm0a = 0 End If Loop Kinderlein: 'Ihr bzw. Zur Pwm0a = G Waitms Achtel Pwm0a = 0 Waitms Achtel 'Kin bzw. Krip Pwm0a = G Waitms Viertel Pwm0a = 0 Waitms 12 'der bzw: pe Pwm0a = E Waitms Achtel Pwm0a = 0 'lein bzw. her Pwm0a = G Waitms Achtel Pwm0a = 0 Waitms 12 'kom kom Pwm0a = G Waitms Viertel Pwm0a = 0 Waitms 12 'met met Pwm0a = E Waitms Achtel 'o bzw. in Pwm0a = G Waitms Achtel 'kom bzw. Beth Pwm0a = F Waitms Viertel 'met bzw. le Pwm0a = D Waitms Achtel 'doch bzw. hems Pwm0a = F Waitms Achtel 'all bzw. Stall Pwm0a = E Waitms Viertel Pwm0a = 0 Waitms 12 Return Weiter: 'Und Pwm0a = E Waitms Achtel 'seht, Pwm0a = D Waitms Viertel Pwm0a = 0 Waitms 12 'was Pwm0a = D Waitms Achtel Pwm0a = 0 Waitms 12 'in Pwm0a = D Waitms Achtel 'die Pwm0a = F Waitms Viertel Pwm0a = 0 Waitms 12 'ser Pwm0a = F Waitms Achtel Pwm0a = 0 Waitms 12 'hoch Pwm0a = F Waitms Achtel Pwm0a = 0 Waitms 12 'hei Pwm0a = E Waitms Viertel Pwm0a = 0 Waitms 12 'li Pwm0a = E Waitms Achtel Pwm0a = 0 Waitms 12 'gen Pwm0a = E Waitms Achtel Pwm0a = 0 Waitms 12 'Nacht Pwm0a = A Waitms 75 Pwm0a = 0 Waitms 12 'der Pwm0a = A Waitms Achtel Pwm0a = 0 'Va Pwm0a = G Waitms Viertel Pwm0a = 0 Waitms 12 'ter Pwm0a = G Waitms Achtel Pwm0a = 0 Waitms 12 'im Pwm0a = G Waitms Achtel Pwm0a = 0 'Waitms 12 'Him Pwm0a = C# Waitms Viertel Pwm0a = 0 'mel Pwm0a = G Waitms Achtel Pwm0a = 0 Waitms 12 'für Pwm0a = E Waitms Achtel 'Freu Pwm0a = G Waitms Viertel Pwm0a = 0 'de Pwm0a = F Waitms Achtel Pwm0a = 0 'uns Pwm0a = D Waitms Achtel Pwm0a = 0 Waitms 12 'macht Pwm0a = C Waitms Viertel Pwm0a = 0 Return
Die HEX-Datei belegt 76 % des Attiny13-Programmspeichers.
Nachdem die Tonausgabe mit dem Mikrocontroller auf einer Sparrow-Platine zur
Zufriedenheit funktionierte,
konnte die abgebildtete Schaltung mit einem ATtiny13 schließlich auf einer Lochrasterplatine
aufgebaut und in die oben abgebildete Weihnachtskrippe integriert werden, damit die Sparrow-Platine
wieder für andere kleine Projekte zur Verfügung steht.
Download und Referenzen: