'Leuchtturm_LiFePo4_2020-11-09.bas '( Simulation eines Leuchfeuers mit LED. Nach dem Einschalten wird die LDR-Spannung gemessen, danach die LiFePo4-Akkuspannung. Dann wird in der Schleife geprüft ob 1. die Spannung < 3,2V ist (Akku fast leer) 2. das Umgebungslicht zu hell ist (LDR < 5kOhm) Wenn die Akkuspannung zu niedrig ist, dann 2x blinken und schlafen. Wenn das Umgebungslich zu hell ist, dann schlafen. Nach dem Aufwachen beginnt 1. und 2. erneut. ') $regfile = "attiny85.dat" $crystal = 1000000 '$crystal = 8000000 $hwstack = 64 $swstack = 20 $framesize = 40 Dim I As Byte Dim Uldr As word dim Ubatt as word 'Dim Info As String * 10 stop ac 'Config Adc = Single , Prescaler = AUTO Config Portb.0 = Output 'Output Timer0 config portb.1 = output 'Output für Spannungsteiler (gesch. Masse) Config Adc = Single , Prescaler = Auto, reference = internal_1.1 Portb.1 = 0 'Schalte Spannungsteiler ein waitms 100 Start Adc waitms 100 Uldr = Getadc(3) Ubatt= getadc(2) portb.1 = 1 'Spannungsteiler aus Stop adc config watchdog = 8192 'Standard Schlafzeit 8s Do 'wenn Spannung < 3.2V, dann zweimal blinken und für 8s einschlafen if Ubatt < 993 then '3,2V/30k*10k=1,067V (=3,2V) = 993 => LiFePo4 fast leer '2 mal blinken = Batterie wechseln bitte! portb.0=1 waitms 50 portb.0=0 waitms 50 portb.0=1 waitms 50 portb.0=0 Start Watchdog Powerdown ' end if 'wenn zu hell, dann für 8s einschlafen if Uldr <= 744 then '3,2V/20k*5k=0,8V = 744 = zu hell Start Watchdog Powerdown ' end if 'Blitz-Effekt wie bei einem umlaufenden Licht: 'Heller werden langsam Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down For I = 255 To 171 Step -1 Pwm0a = I Waitms 7 Next I 'Heller werden schnell For I = 170 To 101 Step -1 Pwm0a = I Waitms 5 Next I 'Heller werden sehr schnell For I = 100 To 0 Step -1 Pwm0a = I Waitms 2 Next I waitms 100 'hell bleiben 'Dunkler werden sehr schnell For I = 0 To 100 Step 1 Pwm0a = I Waitms 2 Next I 'Dunkler werden schnell For I = 101 To 170 Step 1 Pwm0a = I Waitms 5 Next I 'Dunkler werden langsam For I = 171 To 255 Step 1 Pwm0a = I Waitms 7 Next I 'für 4 Sekunden schlafen config watchdog = 4096 Start Watchdog Powerdown Loop End