'Auto Licht Dimmer mit ATtiny26L '---------------------------------- ' ' Stand 02.09.2004 00:20 Uhr '---------------------------------------------------------------------------- 'Innenraumleuchen-Dimmer: 'Türkontakt, Lichtschalter und Zündung werden überwacht. 'Tür öffen, Licht gedimmt an, Tür zu, Lich geht nach ca 5 sec gedimmt aus. 'Zündung vor den 5 sek an, licht geht sofort aus. 'Lichtschalter kann Licht immer einschalten; Aus nur, wenn Tür zu, logisch oder? 'Kein externes Quarz, interner RC reicht $regfile = "at26def.dat" $crystal = 1000000 'Ein- und Ausgänge definieren ' 0 = Eingang, 1 = Ausgang 'Eingänge-------------------------- Ddra.0 = 0 'Tür auf/zu low aktiv (Tür auf = low) Ddra.1 = 0 'Lichtschalter an/aus low aktiv (Schalter an = low) Ddra.2 = 0 'Zündung an low aktiv, evt umstricken 'PullUp´s ------------------------- Porta.0 = 1 'PullUp Porta.1 = 1 'PullUp Porta.2 = 1 'PullUp 'Ausgänge--------------------------- 'PWM Ausgang Ddrb.1 = 1 ' Ports beim µC Start Ein-oder-Ausschalten 'Keine ' PWM - Config ! Portb.1 = 1 'PWM Ausgang Tccr1a = &B01000011 Tccr1b = &B10000001 'Tccr1b = &B10000011 'Variablen für Merker Dim Tuer As Bit Dim Schalter As Bit Dim Motor As Bit Tuer = 0 Schalter = 0 Motor = 0 'Zeitschleife für Abschaltverzögerung Dim Warte As Word Warte = 0 'Variablen für das eigendlichen dimmen Dim Hell As Word Dim Dunkel As Word ' Vergleichswert für den PWM-Timer, siehe Datenblatt Ocr1c = 255 ' |----------------------------| '---------------------------------| Ab hier das ganze Programm |------------------------- ' |----------------------------| ' Kurzer Lampentest beim Eischalten :-) Ocr1a = 254 Waitms 100 Ocr1a = 0 Waitms 100 Main: Do 'Tür auf und zu--------------------- If Pina.1 = 1 And Schalter = 0 Then 'Licht Ein If Pina.0 = 1 And Tuer = 0 Then Waitms 50 Tuer = 1 Warte = 0 Motor = 0 Gosub Hell1 Else End If 'Licht Aus If Pina.0 = 0 And Tuer = 1 And Pina.1 = 1 Then Waitms 10 For Warte = 1 To 6000 Step 1 'Wenn Tür zu, 6 sel Licht an lassen Waitms 1 If Pina.0 = 1 Then Goto Main 'Wenn Tür doch wieder auf, dann Schleife verlassen If Pina.2 = 0 And Motor = 0 And Tuer = 1 Then 'Wenn aber Zündung an, dann Licht sofort aus ! Waitms 10 Warte = 0 Motor = 1 Gosub Dunkel1 Goto Gemma Else Next Warte Warte = 0 End If Gosub Dunkel1 Gemma: Tuer = 0 Warte = 0 Else End If Else End If 'Handlichtschalter ein oder aus---------------------- If Pina.0 = 0 And Tuer = 0 Then 'Lich Ein If Pina.1 = 0 And Schalter = 0 Then 'Schalter ein = Masse Waitms 50 Schalter = 1 'Tuer = 1 Gosub Hell1 Else End If 'Licht Aus If Pina.1 = 1 And Schalter = 1 Then 'Schalter aus = offen 1 Waitms 50 Schalter = 0 Gosub Dunkel1 Else End If Else End If ' Wird nicht mehr gebraucht. ' 'Licht aus wenn Tür zu und Zündung eingeschaltet wird 'If Pina.2 = 0 And Pina.0 = 0 And Pina.1 = 1 And Tuer = 1 Then ' Waitms 10 ' Motor = 1 ' Gosub Dunkel1 ' Else ' End If Goto Main '########################################################################################## Loop ' Hier die beiden Hell und Dunkel Dimm Unterprogramme: Hell1: For Hell = 10 To 250 Step 1 If Hell = 250 Then Hell = 254 Waitms 10 Ocr1a = Hell Next Hell Return Dunkel1: Warte = 0 For Dunkel = 253 To 0 Step -1 Waitms 7 Ocr1a = Dunkel Next Dunkel 'Motor = 0 Return End 'end program