1 | '*******************************************************************************
|
2 | '*** Aussenlichtsteuerung V1.2 ***
|
3 | '*******************************************************************************
|
4 |
|
5 | ' Portd.3 = Output Led Bewegung
|
6 | ' Portb.3 = Output PWM Wandlampe
|
7 | ' Portb.4 = Output PWM Deckenlampe
|
8 | ' Portb.1 = Input Eingang Bewegungsmelder
|
9 | ' Portb.0 = Input Eingang taster
|
10 | '
|
11 | ' a = Lampen gehen An Verzögerungszeit leuft ab
|
12 | ' s = lampen gehen Aus ohne Verzögerungszeit
|
13 | ' m = Menu wird angezeit
|
14 | '
|
15 | ' (1) Speed = Rampengeschwindigkeit fürs PWM
|
16 | ' (2) WandAn = Maximalhelligkeit für die Wandlampen
|
17 | ' (3) DeckeAn = MaximalHelligkeit für die Deckenpampe
|
18 | ' (4) Verzoegerung = Ausschaltzeit bis zum StandBy
|
19 | ' (5) StanbBy = StandBy Wert
|
20 | ' (10) EXIT = Ausgang Menu
|
21 |
|
22 | '*******************************************************************************
|
23 | '*** ***
|
24 | '*******************************************************************************
|
25 |
|
26 | ' Auswahl Chip
|
27 | $regfile = "attiny2313.dat"
|
28 | $crystal = 8000000
|
29 | $baud = 9600
|
30 | $eeprom
|
31 |
|
32 | Config Watchdog = 2048
|
33 |
|
34 |
|
35 | 'PWM und I/O Einstellen
|
36 | Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
|
37 | Set Tccr0a.0
|
38 | Set Tccr0a.1
|
39 | Config Portb.3 = Output ' PWM Wandlampe
|
40 | Config Portb.4 = Output ' PWM Deckenlampe
|
41 | Config Portd.3 = Output ' Bewegungsled
|
42 | Config Portb.1 = Input ' Eingang Bewegungsmelder
|
43 | Config Portb.0 = Input ' Eingang taster
|
44 |
|
45 | ' Variabele Deklariren
|
46 | Dim A As Byte
|
47 | Dim Daten As String * 20 ' RS232 Speicher
|
48 | Dim Wandan As Byte ' Max Hochdimm für Wandlampe
|
49 | Dim Deckean As Byte ' Max Hochdimm für Deckenlampe
|
50 | Dim Standby As Byte ' Standby Dimmwer für Wandlampe
|
51 | Dim Zeit as single ' Arbeitszeit
|
52 | Dim Verzögerung As Word ' Zeit bis zum Runterdimmen
|
53 | Dim Resetzeit As Word
|
54 | Dim Geschwindigkeit As Byte ' PWM Rampe
|
55 | Dim Lichtan As Bit ' Arbeitsmerker nach einer Bewegung o. Tasterdruck
|
56 | Dim Wand As Byte ' PWM Abbeitswert
|
57 | Dim W As Byte ' PWM Abbeitswert
|
58 | Dim Decke As Byte ' PWM Abbeitswert
|
59 | Dim D As Byte ' PWM Abbeitswert
|
60 | Dim Menu As Byte ' Menumerker
|
61 | Dim M As Byte ' Menuauswahl
|
62 |
|
63 | ' Lese EEPROM
|
64 | Readeeprom Geschwindigkeit , 1
|
65 | Readeeprom Wandan , 10
|
66 | Readeeprom Deckean , 20
|
67 | Readeeprom Verzögerung , 30
|
68 | Readeeprom Standby , 40
|
69 |
|
70 | ' Wandlampe in StandBy Hochdimmen
|
71 | For Wand = W To Standby
|
72 | Compare1b = Wand
|
73 | Waitms Geschwindigkeit
|
74 | Next Wand
|
75 | W = Standby
|
76 |
|
77 | Zeit = 0
|
78 | Start Watchdog
|
79 |
|
80 | Do
|
81 | Reset Watchdog
|
82 | Waitms 10 ' Zykluszeit Verlängern
|
83 |
|
84 | If Pinb.1 = 1 Or Pinb.0 = 1 Then ' Eingänge abfragen
|
85 | Set Lichtan
|
86 | End If
|
87 |
|
88 | If Pinb.1 = 1 Or Pinb.0 = 1 Then ' BewegungsLed Schalten
|
89 | Portd.3 = 1
|
90 | Else
|
91 | Portd.3 = 0
|
92 | End If
|
93 |
|
94 | If Pinb.1 = 1 Or Pinb.0 = 1 And Lichtan = 1 Then ' Zeit Zurücksetzen
|
95 | Zeit = 0
|
96 | End If
|
97 |
|
98 | If Lichtan = 1 Then ' Start Zeitablauf
|
99 | Incr Zeit
|
100 | End If
|
101 |
|
102 | If Lichtan = 1 Then ' Wandlampe Hochdimmen
|
103 |
|
104 | For Wand = W To Wandan
|
105 | Compare1b = Wand
|
106 | Waitms Geschwindigkeit
|
107 | Reset Watchdog
|
108 | Next Wand
|
109 | W = Wandan
|
110 |
|
111 |
|
112 | For Decke = D To Deckean 'Deckenlampe Hochdimmen
|
113 | Compare1a = Decke
|
114 | Waitms Geschwindigkeit
|
115 | Reset Watchdog
|
116 | Next Decke
|
117 | D = Deckean
|
118 | End If
|
119 |
|
120 | If Zeit = Verzögerung Then ' Vergleich Zeit mit der Verzögerung
|
121 |
|
122 | Reset Lichtan
|
123 |
|
124 | For Decke = D To 0 Step -1 ' Deckenlampe Runterdimmen
|
125 | Compare1a = Decke
|
126 | Waitms Geschwindigkeit
|
127 | Reset Watchdog
|
128 | Next Decke
|
129 | D = 0
|
130 |
|
131 |
|
132 | For Wand = W To Standby Step -1 ' Wandlampe auf StandBy Runterdimmen
|
133 | Compare1b = Wand
|
134 | Waitms Geschwindigkeit
|
135 | Reset Watchdog
|
136 | Next Wand
|
137 | W = Standby
|
138 | Zeit = 0
|
139 | End If
|
140 |
|
141 | Print Zeit
|
142 |
|
143 | A = Ischarwaiting()
|
144 |
|
145 | If A = 1 Then
|
146 | A = Waitkey()
|
147 | Print A
|
148 | End If
|
149 |
|
150 | If A = 97 Then ' RS 232 Befehl für Lampen einschalten
|
151 | Set Lichtan
|
152 | A = 0
|
153 | End If
|
154 |
|
155 | If A = 115 Then ' RS 232 Befehl für Lampen ausschalten
|
156 | Resetzeit = Verzögerung - 2
|
157 | Zeit = Resetzeit
|
158 | Print Zeit
|
159 | A = 0
|
160 | End If
|
161 |
|
162 | If A = 109 Then ' RS 232 Befehl für Menu
|
163 | A = 0
|
164 | ' Stop Watchdog
|
165 | Set Menu
|
166 | End If
|
167 |
|
168 | Daten = " "
|
169 |
|
170 | If Menu = 1 Then
|
171 | ' Reset Watchdog
|
172 | Stop Watchdog
|
173 | Print Geschwindigkeit
|
174 | Print Wandan
|
175 | Print Deckean
|
176 | Print Verzögerung
|
177 | Print Standby
|
178 | Stop Watchdog
|
179 | Input "" , M
|
180 | Stop Watchdog
|
181 | Select Case M
|
182 | Case 1 : ' Änderung Geschwindigkeit
|
183 | Readeeprom Geschwindigkeit , 1
|
184 | Input "W " , Geschwindigkeit
|
185 | Writeeeprom Geschwindigkeit , 1
|
186 |
|
187 | Case 2 :
|
188 | Readeeprom Wandan , 10 ' Änderung Maxwert Wandlamppe
|
189 | Input "W " , Wandan
|
190 | Writeeeprom Wandan , 10
|
191 |
|
192 | Case 3 :
|
193 | Readeeprom Deckean , 20 ' Änderung Maxwert Deckenlampe
|
194 | Input "W " , Deckean
|
195 | Writeeeprom Deckean , 20
|
196 |
|
197 | Case 4 :
|
198 | Readeeprom Verzögerung , 30 ' Änderung Verzögerungszeit
|
199 | Input "W " , Verzögerung
|
200 | Writeeeprom Verzögerung , 30
|
201 |
|
202 | Case 5 :
|
203 | Readeeprom Standby , 40 ' Änderung Wandlampe StandBy Wert
|
204 | Input "W : " , Standby
|
205 | Writeeeprom Standby , 40
|
206 |
|
207 | Case 10 : ' Menu Ausgang
|
208 | Menu = 0
|
209 | End Select
|
210 |
|
211 |
|
212 | End If
|
213 | Loop 'end program
|