MC Bikes & Projekte
MC Friends
- Basty
- Bodo
- Hendrik
- Riko
- Simon
Aktuelle Zeit: 17:22:14 01.12.2024
Zum Selbstbau der Blinksteuerung hier eine vereinfache Variante.
Im unten abgebildeten Schaltplan ist der Aufbau ersichtlich, welcher einfach auf einer Lochrasterplatine vorgenommen werden kann. Der SourceCode namens “Flasher” für den Controller ist in den Examples von LunaAVR zu finden. Alternativ Sourcecode und Hex-File zum Flashen für den Attiny85 siehe unten.
Im Unterschied zur professionell gefertigten Version, ist diese Blinksteuerung allein für Taster als Signaleingang vorgesehen und die Endstufen schalten nach Masse. Hiermit können handelsübliche Miniatur-Lastrelais angesteuert werden, wenn die zu schaltende Last größer als 4 A ist (Glühbirnen).
'-------------------------------------------------------------- ' (c) 2010 rgf software '-------------------------------------------------------------- ' Blinksteuerung fuer BMW/Harley-Armaturen mit Antippfunktion ' (nur 3x Blinken bei kurzer Betaetigung) und Warnblinklicht. '-------------------------------------------------------------- avr.device = attiny85 avr.clock = 8000000 avr.stack = 38 dim i,blinkmode,BlinkCount,KurzBlinken,LastPressed as byte dim tcount,ticks,t as integer const TasterState = 0 const DauerBlinkZeit = 300 portb.1.mode = Output, low portb.2.mode = Output, low portb.4.mode = Input portb.5.mode = Input Timer0.clock = 1024 Timer0.isr = BlinkTimer Timer0.Enable avr.interrupts.enable #define TasterLinks as PORTB.4 #define TasterRechts as PORTB.3 #define BlinkerLinks as PORTB.1 #define BlinkerRechts as PORTB.2 do if TasterLinks = TasterState then waitms 25 ' debounce if TasterLinks = TasterState then if blinkmode > 0 then BlinkerOff() else blinkmode = 1 KurzBlinken = 1 BlinkCount = 0 tcount = 0 BlinkerToggle() waitms DauerBlinkZeit if TasterLinks = TasterState then ' pr�fen ob Taster immernoch gedr�ckt KurzBlinken = 0 end if if TasterRechts = TasterState then waitms 25 ' debounce if TasterRechts = TasterState then ' Beide gedr�ckt? BlinkerOff() blinkmode = 3 KurzBlinken = 0 end if end if end if TasterWait() end if end if if TasterRechts = TasterState then waitms 25 ' debounce if TasterRechts = TasterState then if blinkmode > 0 then BlinkerOff() else blinkmode = 2 KurzBlinken = 1 BlinkCount = 0 tcount = 0 BlinkerToggle() waitms DauerBlinkZeit if TasterRechts = TasterState then ' pr�fen ob Taster immernoch gedr�ckt KurzBlinken = 0 end if if TasterLinks = TasterState then waitms 25 ' debounce if TasterLinks = TasterState then ' Beide gedr�ckt? BlinkerOff() blinkmode = 3 KurzBlinken = 0 end if end if end if TasterWait() end if end if loop procedure TasterWait() do waitms 25 loop until TasterLinks = 1 and TasterRechts = 1 endproc isr BlinkTimer incr tcount if tcount = 12 then ' 1,5 Hz BlinkerToggle() tcount = 0 incr BlinkCount if KurzBlinken = 1 and BlinkCount >= 6 then ' 3 x blinken und aus BlinkerOff() elseif BlinkCount >= 200 then ' 100 x blinken und aus (wenn vergessen automatische R�ckstellung) if blinkmode < 3 then BlinkerOff() end if end if end if endisr procedure BlinkerOff() blinkmode = 0 BlinkerLinks = 0 BlinkerRechts = 0 endproc procedure BlinkerToggle() if blinkmode=1 or blinkmode=3 then toggle BlinkerLinks end if if blinkmode=2 or blinkmode=3 then toggle BlinkerRechts end if endproc