Hier die Glimm- oder Glühversion (Ein- und Ausfaden) für 128kHz mit Soft-PWM.
Es werden nicht alle Tabellenwerte der Fadingtabelle komplett genutzt.
Schaltung wie folgt:
LED Anode an Pin3, LED Kathode an Pin 4 (GND). Batterie + an Pin 8, Batterie - an Pin 4.
Ganz unten auch Downloadmöglichkeiten und Einstellungen der Fuses.
' Reaktivlicht mit Glimmen (Fadein- und Fadeout)
' Version 1.0
' (c) geoclub 2009 & schnasemann
$regfile = "ATtiny13.DAT"
$crystal = 128000 'Reale Frequenz des internen 128kHz-Oszillators
$hwstack = 10 ' default use 32 for the hardware stack
$swstack = 10 'default use 10 for the SW stack
$framesize = 10 'default use 40 for the frame
Stop Ac
Config Portb = &B11101111 'Portb.4 auf 'Eingang' schalten
Portb = &B00000000 'keine Pullups zuschalten
Wdtcr = &B11010100 'Watchdog auf 250ms einstellen
Enable Interrupts
Config Adc = Single , Prescaler = Auto , Reference = Internal 'referenzspannung Des Adc Auf "Internal" = 1,1 V
Dim Wert1 As Word
Dim Wert2 As Word
Dim Schwelle As Word
Dim Anzahl As Byte
Dim Soft1 As Byte
Dim Soft2 As Byte
Dim Aktuell As Byte
Dim Zwisum As Byte
Dim Soft3 As Word
Const Dunkelwert = 18 ' Wert, ab dem Nacht erkannt wird
Const Hub = 10
Do
Wdtcr = &B11010100 'Watchdog auf 250ms einstellen
Reset Watchdog
Powerdown
Start Adc
Config Portb.4 = Output 'LED "entladen"
Portb.4 = 0
'Waitus 1500
Wdtcr = &B11010000 'Watchdog auf 16ms einstellen
Reset Watchdog
Powerdown
Config Portb.4 = Input
Portb.4 = 0
cbi adcsra,7 'ADEN = 0
Wdtcr = &B11010000 'Watchdog auf 16ms einstellen
Reset Watchdog
Powerdown
sbi adcsra,7 'ADEN = 1
Wert2 = Getadc(2) 'Spannung der LED messen
Stop Adc
Schwelle = Wert1 + Hub 'Schwelle festlegen, je kleiner desto empfindlicher
If Wert1 < Dunkelwert And Wert2 >= Schwelle Then 'Dunkelschwelle festlegen, je kleiner desto dunkler
Gosub Blitz
End If
If Wert1 >= Dunkelwert And Wert2 >= Dunkelwert Then 'bei Tag oder Dauerlicht Watchdog aktivieren
Wdtcr = &B11110001 'Watchdog auf 8s einstellen Reset Watchdog Powerdown
End If
Wert1 = Wert2 'Wert2 nach Wert1 verschieben
Loop
Blitz: 'LED faden lassen
Config Portb.4 = Output
Portb.4 = 0
For Anzahl = 1 To 10
For Soft1 = 0 To 31 Aktuell = Lookup(soft1 , Fade) For Soft2 = 0 To 150
If Soft2 < Aktuell Then Portb.4 = 1 Else Portb.4 = 0 End If Next Soft2 Next Soft1 For Soft1 = 0 To 31 Zwisum = 31 - Soft1 Aktuell = Lookup(zwisum , Fade) For Soft2 = 0 To 150 If Soft2 < Aktuell Then Portb.4 = 1 Else Portb.4 = 0 End If Next Soft2 Next Soft1 Portb.4 = 0 Wdtcr = &B11010100 'Watchdog auf 250ms einstellen Reset Watchdog Powerdown Reset Watchdog Powerdown
Next Anzahl
Return
End
Fade:
Data 0 , 1 , 2 , 2 , 2 , 3 , 3 , 4 , 5 , 6 , 7 , 8 , 10 , 11 , 13 , 16 , 19 , 23 , 27 , 32 , 38 , 45 , 54 , 64 , 76 , 91 , 108 , 128 , 152 , 181 , 215 , 255
Hier der obige Code als Bascom-File: reaktivlicht_nur_wdt_ohne_daylightflash_fadeinout.bas
Hier das Ganze als Hex-File: reaktivlicht_nur_wdt_ohne_daylightflash_fadeinout.hex
Die Fuses sind wie folgt gesetzt:
Weiteres über die Controller und Einstellungen der Fuses auch unter Atmel Mikrocontroller
und so sieht das ganze dann im Video aus:
Comments (0)
You don't have permission to comment on this page.