Tiny Candle
von Stefan Speckmann
Mit etwas Software-PWM habe ich hier ein "zufälliges" Flackern
realisiert. Drei Zufallswerte spielen hier eine Rolle: Helligkeit, Flackerzeit und
die Pausenzeit. Alle Werte werden mit einer Random-Funktion innerhalb
bestimmter Grenzen generiert. So geht der Helligkeitswert nur bis ca.
60 Prozent runter. Die Flackerzeit schwankt im Millisekundenbereich und
die Pausenzeit variiert hier von Millisekunden bis hin zu
wenigen Sekunden. Da der Zufallsgenerator nur ein "Pseudozufallsgenerator" ist,
ergab sich hierein besonderes Problem: Nach dem Einschalten des Kranzes
flackern alle Kerzen im Gleichtakt. Und um das zu vermeiden, habe
ich bei jeder Programmierung eines Tinys für den Randomgenerator
einen anderen Startwert gesetzt.
Download: Candle.zip
$regfile = "ATtiny13.dat"
$hwstack = 16
Config Pinb.4 = Output
Dim A As Byte
Dim H As Byte , H1 As Byte
Dim F1 As Byte , F2 As Byte
Dim P As Word
'**************************************
Dim ___rseed As Word : ___rseed = 2400
'***************************************
'Bei jedem Tiny einen anderen Startwert setzen!
Do
P = Rnd(5000) 'Pausenzeit
F1 = Rnd(100) 'Flackerzeit
H1 = Rnd(180) 'Helligkeitswert
H = H1 + 75
For F2 = 0 To F1
Portb.4 = 1
For A = 0 To 255
If H = A Then Portb.4 = 0
Waitus 15
Next A
Next F2
Portb.4 = 1
Waitms P
Loop
End