schnasemann
Geocacher
Hallo, die Damen und Herren, ich habe beim Surfen http://tinkerlog.com/2008/07/27/synchronizing-fireflies-ng/ gefunden und musste mich bremsen, dass ich nicht gleich 100 Tischtennisbälle und den kompletten Unterbau dazu bestelle. Toll, oder?
Nun dachte ich, das müsste sich doch auch in meine RLs reinbauen lassen. Idee war, dass ein ausgelöstes RL nach anderen blinkt und diese dann versuchen, synchron zu blinken und sich quasi alle auszulösen.
Als Sensor soll wieder die LED herhalten. Nun macht mir aber BASCOM einen Strich durch die Rechnung, weil ich zu viel Flash benötigen würde (110%).
Ist der Compiler so viel schlechter, als der WinAVR C-Compiler? Hier mein Code:
Any hints?
Seid gegrüßt,
schnasemann
Nun dachte ich, das müsste sich doch auch in meine RLs reinbauen lassen. Idee war, dass ein ausgelöstes RL nach anderen blinkt und diese dann versuchen, synchron zu blinken und sich quasi alle auszulösen.
Als Sensor soll wieder die LED herhalten. Nun macht mir aber BASCOM einen Strich durch die Rechnung, weil ich zu viel Flash benötigen würde (110%).
Ist der Compiler so viel schlechter, als der WinAVR C-Compiler? Hier mein Code:
Code:
$regfile = "ATtiny13.DAT"
$crystal = 9600000 'Reale Frequenz des internen 128kHz-Oszillators
$hwstack = 5 'default use 32 for the hardware stack
$swstack = 5 'default use 10 for the SW stack
$framesize = 20 'default use 40 for the frame
Const Daylight = 240
Const Flashpower = 8000
Stop Ac
Config Portb = &B11101110 'Portb.4 und Portb.0 auf 'Eingang' schalten
Portb = &B00000001 'keine Pullups zuschalten, nur PB0
Wdtcr = &B11010100 'Watchdog auf 250ms einstellen
Enable Interrupts
Config Adc = Single , Prescaler = Auto , Reference = Internal 'Referenzspannung des Adc Auf "Internal" = 1,1 V
Dim Act_light As Byte ' gemessenes Licht
Dim Count As Byte ' Zähler für Soft-PWM
Count = 0
Dim R As Byte
Dim Rb As Byte
R = 0
Rb = 0
Config Timer0 = Timer , Prescale = 1
On Timer0 Tim0_isr
Dim I As Byte
I = 0
Dim Light As Byte
Light = 0
Dim Threshold As Word
Threshold = 0
Dim Lpower As Word
Lpower = 0
Dim Blind As Word
Blind = 0
'// compute threshold of the ambient light
For I = 1 To 4
Gosub Einlesen
Threshold = Threshold + Act_light
Waitms 500
Next I
Threshold = Threshold / 4
Threshold = Threshold + 20
I = Act_light Mod 4
While I > 0 ' zufallszeit warten
Decr I
Waitms 1000
Wend
Do
If Lpower > 6000 Then
Lpower = Lpower + 1
Elseif Lpower > 4000 Then
Lpower = Lpower + 2
Elseif Lpower > 3000 Then
Lpower = Lpower + 4
Elseif Lpower > 2000 Then
Lpower = Lpower + 8
Else
Lpower = Lpower + 16
End If
Gosub Einlesen
Light = Act_light
If Blind = 0 Then
If Light > Daylight Then
R = 32
Waitms 10000
R = 0
Elseif Light > Threshold Then
Lpower = Lpower + 400
Blind = 800
End If
End If
If Blind > 0 Then
Decr Blind
End If
If Lpower > Flashpower Then
R = 255
Waitms 500
R = 0
Lpower = 0
Blind = 100
End If
Loop
Einlesen:
Start Adc
Config Portb.4 = Output 'LED "entladen"
Portb.4 = 0
Waitms 20
Config Portb.4 = Input
Portb.4 = 0
cbi adcsra,7 'ADEN = 0
Waitms 20
sbi adcsra,7 'ADEN = 1
Act_light = Getadc(2) 'Spannung der LED messen
Stop Adc
Return
Tim0_isr:
Incr Count
If Count = 0 Then
Rb = R
If Rb > 0 Then
Config Portb.4 = Output
Portb.4 = 1
End If
If Count = Rb Then
Portb.4 = 0
End If
End If
Return
End
Any hints?
Seid gegrüßt,
schnasemann