Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| elektronik:bascom:elektronische-adventkerzen [18.08.2026 00:09] – angelegt Martin Fitzel | elektronik:bascom:elektronische-adventkerzen [18.08.2026 00:12] (aktuell) – Martin Fitzel | ||
|---|---|---|---|
| Zeile 13: | Zeile 13: | ||
| | 4 | | 4 | ||
| + | |||
| + | ===== Beschreibung ===== | ||
| + | |||
| + | In vielen Haushalten ist es ein Brauch, während der Vorweihnachtszeit Adventkerzen brennen zu lassen, wobei die Anzahl der brennenden Kerzen angeben, welche Adventwoche gerade ist. Leider sind, gerade in Haushalten mit Kindern, echte Kerzen doch recht gefährlich. Eine Lösung wäre es, diese durch einfache Kerzenlampen zu ersetzen. Aber solche Lampen geben nur ein konstantes Licht ab. Das ' | ||
| + | |||
| + | Eine möglich Lösung könnte diese Bastelei darstellen. Hier sorgt ein kleiner AVR dafür, dass bis zu 8 ' | ||
| + | |||
| + | ===== Schaltplan ===== | ||
| + | {{.: | ||
| + | |||
| + | ===== BASCOM Code ===== | ||
| + | <code bascomavr [enable_line_numbers=" | ||
| + | '################################## | ||
| + | '### | ||
| + | '### Elektronische Adventkerzen ### | ||
| + | '### | ||
| + | '################################## | ||
| + | |||
| + | $regfile " | ||
| + | $crystal = 1000000 | ||
| + | |||
| + | '### Variablendefination | ||
| + | Dim Cnt(8) As Byte | ||
| + | Dim Count As Byte | ||
| + | Dim C As Byte | ||
| + | |||
| + | '### Ausgabeport auf Ausgang schalten | ||
| + | Config Porta = Output | ||
| + | |||
| + | '### Timer für Lichtflackern aktivieren | ||
| + | Config Timer0 = Timer , Prescale = 256 | ||
| + | Enable Timer0 | ||
| + | On Timer0 Firelights | ||
| + | |||
| + | '### Timer für PWM-Steuerung aktivieren | ||
| + | Config Timer1 = Timer , Prescale = 1 | ||
| + | Enable Timer1 | ||
| + | On Timer1 Timer_counter | ||
| + | |||
| + | '### Interrupts aktivieren | ||
| + | Enable Interrupts | ||
| + | |||
| + | '### Leerschleife als Hauptprogramm | ||
| + | Do | ||
| + | Loop | ||
| + | |||
| + | '### Lichtflackern | ||
| + | Firelights: | ||
| + | For C = 1 To 8 | ||
| + | Cnt(c) = Rnd(256) | ||
| + | Next C | ||
| + | Return | ||
| + | |||
| + | '### PWM-Steuerung der Ausgänge | ||
| + | Timer_counter: | ||
| + | Incr Count : If Count >= 64 Then Count = 0 | ||
| + | If Cnt(1) > Count Then Porta.0 = 1 Else Porta.0 = 0 | ||
| + | If Cnt(2) > Count Then Porta.1 = 1 Else Porta.1 = 0 | ||
| + | If Cnt(3) > Count Then Porta.2 = 1 Else Porta.2 = 0 | ||
| + | If Cnt(4) > Count Then Porta.3 = 1 Else Porta.3 = 0 | ||
| + | If Cnt(5) > Count Then Porta.4 = 1 Else Porta.4 = 0 | ||
| + | If Cnt(6) > Count Then Porta.5 = 1 Else Porta.5 = 0 | ||
| + | If Cnt(7) > Count Then Porta.6 = 1 Else Porta.6 = 0 | ||
| + | If Cnt(8) > Count Then Porta.7 = 1 Else Porta.7 = 0 | ||
| + | Return | ||
| + | </ | ||