SHOW:
|
|
- or go back to the newest paste.
1 | /* | |
2 | Copyright 2012 D Westaby | |
3 | - | |
3 | + | |
4 | ---------------------------------------------------------------------- | |
5 | Car Lights for Attiny2313 | |
6 | ---------------------------------------------------------------------- | |
7 | - | Title: Car_Lighting.D |
7 | + | Title: Car_Lighting.c |
8 | Author: Dustin Westaby | |
9 | Date Created: September 8, 2012 | |
10 | Date Modified: September 21, 2012 | |
11 | - | |
11 | + | |
12 | Compiled with AVR-GCC WinAVR | |
13 | - | |
13 | + | |
14 | ---------------------------------------------------------------------- | |
15 | Fuses: | |
16 | ---------------------------------------------------------------------- | |
17 | BrownOut Disabled | |
18 | CKDIV8 | |
19 | Int RC Osc 8Mhz + 64ms | |
20 | - | |
20 | + | |
21 | ---------------------------------------------------------------------- | |
22 | Inputs: | |
23 | ---------------------------------------------------------------------- | |
24 | None | |
25 | - | |
25 | + | |
26 | ---------------------------------------------------------------------- | |
27 | Ouputs: | |
28 | ---------------------------------------------------------------------- | |
29 | pin i/o port circuit trace connection | |
30 | ---------------------------------------------------------------------- | |
31 | 4 1 PA1 = R_LED1 | |
32 | 5 1 PA0 = L_LED2 | |
33 | 2 1 PD0 = R_LED3 | |
34 | 3 1 PD1 = R_LED4 | |
35 | 6 1 PD2 = R_LED5 | |
36 | 7 1 PD3 = R_LED6 | |
37 | 14 1 PB2 = L_LED7 | |
38 | 17 1 PB5 = L_LED8 | |
39 | 18 1 PB6 = L_LED9 | |
40 | 19 1 PB7 = L_LED10 | |
41 | - | |
41 | + | |
42 | */ | |
43 | - | |
43 | + | |
44 | /*-------------------------------------- | |
45 | - | // Global Variables | |
45 | + | Global Variables | |
46 | ---------------------------------------- */ | |
47 | - | // 8 MHz Internal Oscillator DIV8 (used for delay subroutines) |
47 | + | |
48 | - | // One CPU Cycle = 1us |
48 | + | /* 8 MHz Internal Oscillator DIV8 (used for delay subroutines) |
49 | One CPU Cycle = 1us */ | |
50 | - | |
50 | + | |
51 | ||
52 | #define R_LED1_PA1 (1<<1) | |
53 | #define L_LED2_PA0 (1<<0) | |
54 | #define R_LED3_PD0 (1<<0) | |
55 | #define R_LED4_PD1 (1<<1) | |
56 | #define R_LED5_PD2 (1<<2) | |
57 | #define R_LED6_PD3 (1<<3) | |
58 | #define L_LED7_PB2 (1<<2) | |
59 | #define L_LED8_PB5 (1<<5) | |
60 | #define L_LED9_PB6 (1<<6) | |
61 | #define L_LED10_PB7 (1<<7) | |
62 | - | //This value is used to count us of delay and convert to ms |
62 | + | |
63 | - | //Due to other cpu processing: "1ms of delay" < "1000us of delay" |
63 | + | //delay wait values, measured in us |
64 | #define DIM_DELAY_ON (200) | |
65 | #define DIM_DELAY_OFF (200) | |
66 | ||
67 | /* This value is used to count us of delay and convert to ms | |
68 | - | |
68 | + | Due to other cpu processing: "1ms of delay" < "1000us of delay" */ |
69 | #define TIME_CONVERSION_VAL (50) | |
70 | ||
71 | int program_ms_counter; | |
72 | int program_counter_us; //used for tracking time elapsed | |
73 | ||
74 | - | |
74 | + | |
75 | // Includes | | |
76 | //-------------------------------------- | |
77 | #include <avr/io.h> | |
78 | #include <util/delay.h> | |
79 | ||
80 | //-------------------------------------- | |
81 | // Delay Subroutines | | |
82 | //-------------------------------------- | |
83 | //These functions are from the delay.h include, the calls to delay functions | |
84 | //are re-written here to allow for longer waits. | |
85 | void delay_ms(uint16_t ms) { | |
86 | program_ms_counter+=ms; | |
87 | while ( ms ) | |
88 | { | |
89 | _delay_ms(1); | |
90 | ms--; | |
91 | } | |
92 | } | |
93 | ||
94 | void delay_us(uint16_t us) { | |
95 | - | |
95 | + | |
96 | while ( us ) | |
97 | { | |
98 | - | program_ms_counter++; |
98 | + | |
99 | - | program_counter_us-=TIME_CONVERSION_VAL; |
99 | + | |
100 | } | |
101 | ||
102 | - | |
102 | + | //This loop will continue to convert us into ms until the "us counter" is |
103 | // below the conversion val | |
104 | - | // Misc Subroutines | |
104 | + | |
105 | { | |
106 | - | |
106 | + | program_ms_counter++; //increment "ms counter" |
107 | program_counter_us-=TIME_CONVERSION_VAL; //subtract "us counter" | |
108 | - | program_ms_counter=0; |
108 | + | |
109 | - | program_counter_us=0; |
109 | + | |
110 | ||
111 | - | |
111 | + | |
112 | - | void all_LEDs_ON(void) { |
112 | + | // Program Subroutines | |
113 | - | PORTA = 0xFF; |
113 | + | |
114 | - | PORTB = 0xFF; |
114 | + | |
115 | - | PORTD = 0xFF; |
115 | + | |
116 | //set "ms counter" and "us counter" to 0 | |
117 | - | |
117 | + | program_ms_counter=0; |
118 | program_counter_us=0; | |
119 | - | PORTA &= ~(R_LED1_PA1 + L_LED2_PA0); |
119 | + | |
120 | - | PORTB &= ~(L_LED10_PB7 + L_LED9_PB6 + L_LED8_PB5 + L_LED7_PB2); |
120 | + | |
121 | - | PORTD &= ~(R_LED6_PD3 + R_LED5_PD2 + R_LED4_PD1 + R_LED3_PD0); |
121 | + | void all_LEDs_BRT(void) { |
122 | //Sets all PORT outputs to 1, which is a high (+5V) on the pin | |
123 | PORTA = 0xFF; // = 0b11111111 | |
124 | - | void program1_off(void) { |
124 | + | PORTB = 0xFF; |
125 | - | PORTA &= ~(R_LED1_PA1 + L_LED2_PA0); |
125 | + | PORTD = 0xFF; |
126 | - | PORTB &= ~(L_LED10_PB7 + L_LED9_PB6 + L_LED8_PB5 + L_LED7_PB2); |
126 | + | |
127 | - | PORTD &= ~(R_LED6_PD3 + R_LED5_PD2 + R_LED4_PD1 + R_LED3_PD0); |
127 | + | |
128 | void all_LEDs_OFF(void) { | |
129 | - | |
129 | + | //Sets all PORT outputs to 0, which is a low (GND) on the pin |
130 | - | void program2_off(void) { |
130 | + | Porta &= ~( R_Led1_Pa1 //Turn Off Port A, Pin 1 |
131 | - | PORTA &= ~(R_LED1_PA1 + L_LED2_PA0); |
131 | + | + L_Led2_Pa0); //Turn Off Port A, Pin 0 |
132 | - | PORTB &= ~(L_LED10_PB7 + L_LED8_PB5); |
132 | + | Portb &= ~( L_Led10_Pb7 //Turn Off Port B, Pin 7 |
133 | - | PORTD &= ~(R_LED6_PD3 + R_LED5_PD2 + R_LED4_PD1 + R_LED3_PD0); |
133 | + | + L_Led9_Pb6 //Turn Off Port B, Pin 6 |
134 | + L_Led8_Pb5 //Turn Off Port B, Pin 5 | |
135 | + L_Led7_Pb2); //Turn Off Port B, Pin 2 | |
136 | - | void program3_off(void) { |
136 | + | Portd &= ~( R_Led6_Pd3 //Turn Off Port D, Pin 3 |
137 | - | PORTA &= ~(R_LED1_PA1 + L_LED2_PA0); |
137 | + | + R_Led5_Pd2 //Turn Off Port D, Pin 2 |
138 | + R_Led4_Pd1 //Turn Off Port D, Pin 1 | |
139 | + R_Led3_Pd0); //Turn Off Port D, Pin 0 | |
140 | - | void program4_off (void) { |
140 | + | |
141 | - | PORTA &= ~(R_LED1_PA1 + L_LED2_PA0); |
141 | + | |
142 | - | PORTB &= ~(L_LED10_PB7 + L_LED9_PB6 + L_LED8_PB5 + L_LED7_PB2); |
142 | + | void program2_LEDs_to_DIM(void) { |
143 | - | PORTD &= ~(R_LED6_PD3 + R_LED5_PD2 + R_LED4_PD1 + R_LED3_PD0); |
143 | + | PORTA &= ~( R_LED1_PA1 //Turn Off PORT A, pin 1 |
144 | + L_LED2_PA0); //Turn Off PORT A, pin 0 | |
145 | PORTB &= ~( L_LED10_PB7 //Turn Off PORT B, pin 7 | |
146 | - | void program5_off (void) { |
146 | + | + L_LED8_PB5); //Turn Off PORT B, pin 5 |
147 | - | PORTA &= ~(R_LED1_PA1 + L_LED2_PA0); |
147 | + | PORTD &= ~( R_LED6_PD3 //Turn Off PORT D, pin 3 |
148 | - | PORTB &= ~(L_LED10_PB7 + L_LED9_PB6 + L_LED8_PB5 + L_LED7_PB2); |
148 | + | + R_LED5_PD2 //Turn Off PORT D, pin 2 |
149 | - | PORTD &= ~(R_LED6_PD3 + R_LED4_PD1); |
149 | + | + R_LED4_PD1 //Turn Off PORT D, pin 1 |
150 | + R_LED3_PD0); //Turn Off PORT D, pin 0 | |
151 | } | |
152 | - | void program6_off (void) { |
152 | + | |
153 | - | PORTA &= ~(R_LED1_PA1 + L_LED2_PA0); |
153 | + | void program3_6_LEDs_to_DIM(void) { |
154 | PORTA &= ~( R_LED1_PA1 //Turn Off PORT A, pin 1 | |
155 | - | |
155 | + | + L_LED2_PA0); //Turn Off PORT A, pin 0 |
156 | } | |
157 | ||
158 | void program5_LEDs_to_DIM (void) { | |
159 | PORTA &= ~( R_LED1_PA1 //Turn Off PORT A, pin 1 | |
160 | + L_LED2_PA0); //Turn Off PORT A, pin 0 | |
161 | PORTB &= ~( L_LED10_PB7 //Turn Off PORT B, pin 7 | |
162 | - | |
162 | + | + L_LED9_PB6 //Turn Off PORT B, pin 6 |
163 | + L_LED8_PB5 //Turn Off PORT B, pin 5 | |
164 | + L_LED7_PB2); //Turn Off PORT B, pin 2 | |
165 | PORTD &= ~( R_LED6_PD3 //Turn Off PORT D, pin 3 | |
166 | - | |
166 | + | + R_LED4_PD1); //Turn Off PORT D, pin 1 |
167 | - | int dim_delay_on = 200; //us |
167 | + | |
168 | - | int dim_delay_off = 4000; //us |
168 | + | |
169 | - | |
169 | + | /* Software PWM explaination: |
170 | ||
171 | The dim LED effect is performed by a software PWM. Each of the loops in the | |
172 | main() function turn on all LEDs, then turn off only the LEDs we want as DIM. | |
173 | The LEDs that remain on will appear BRIGHT. The LEDs that are rapid turned | |
174 | - | |
174 | + | on and off will appear DIM. |
175 | ||
176 | - | |
176 | + | DIM_DELAY_ON DIM_DELAY_ON |
177 | +5V ______________ _______________ | |
178 | | | | | | |
179 | GND _______________| |_______________| |______________ | |
180 | - | |
180 | + | DIM_DELAY_OFF DIM_DELAY_OFF DIM_DELAY_OFF |
181 | */ | |
182 | ||
183 | - | |
183 | + | void program_NORMAL_MODE(void) { |
184 | - | //program 1 |
184 | + | all_LEDs_BRT(); //Turn on all LEDs |
185 | delay_us(DIM_DELAY_ON); //Time to keep all LEDs on | |
186 | all_LEDs_OFF(); //Turn off all LEDs | |
187 | delay_us(DIM_DELAY_OFF); //Time to keep all LEDs off | |
188 | - | all_LEDs_ON(); |
188 | + | |
189 | - | delay_us(dim_delay_on); |
189 | + | |
190 | - | all_LEDs_OFF(); |
190 | + | void program_LEFT_TURN(void) { |
191 | - | delay_us(dim_delay_off); |
191 | + | all_LEDs_BRT(); //Turn on all LEDs |
192 | delay_us(DIM_DELAY_ON); //Time to keep all LEDs on | |
193 | program2_LEDs_to_DIM(); //Turn off program 2 LEDs | |
194 | - | //program 2 |
194 | + | delay_us(DIM_DELAY_OFF); //Time to keep program 2 LEDs off |
195 | } | |
196 | ||
197 | void program_BRAKE_MODE(void) { | |
198 | - | all_LEDs_ON(); |
198 | + | all_LEDs_BRT(); //Turn on all LEDs |
199 | - | delay_us(dim_delay_on); |
199 | + | delay_us(DIM_DELAY_ON); //Time to keep all LEDs on |
200 | - | program3_off(); |
200 | + | program3_6_LEDs_to_DIM(); //Turn off program 3 LEDs |
201 | - | delay_us(dim_delay_off); |
201 | + | delay_us(DIM_DELAY_OFF); //Time to keep program 3 LEDs off |
202 | } | |
203 | ||
204 | void program_RIGHT_TURN (void) { | |
205 | - | all_LEDs_ON(); |
205 | + | all_LEDs_BRT(); //Turn on all LEDs |
206 | - | delay_us(dim_delay_on); |
206 | + | delay_us(DIM_DELAY_ON); //Time to keep all LEDs on |
207 | - | all_LEDs_OFF(); |
207 | + | program5_LEDs_to_DIM(); //Turn off program 5 LEDs |
208 | - | delay_us(dim_delay_off); |
208 | + | delay_us(DIM_DELAY_OFF); //Time to keep program 5 LEDs off |
209 | } | |
210 | ||
211 | ||
212 | - | all_LEDs_ON(); |
212 | + | |
213 | - | delay_us(dim_delay_on); |
213 | + | |
214 | - | program3_off(); |
214 | + | |
215 | - | delay_us(dim_delay_off); |
215 | + | |
216 | { | |
217 | ||
218 | /* ---------------------------------------------------------------- */ | |
219 | - | all_LEDs_ON(); |
219 | + | |
220 | - | delay_us(dim_delay_on); |
220 | + | |
221 | - | all_LEDs_OFF(); |
221 | + | |
222 | - | delay_us(dim_delay_off); |
222 | + | |
223 | DDRA = 0b00000011; //A0, A1 | |
224 | DDRB = 0b11111111; | |
225 | DDRD = 0b11111111; | |
226 | - | all_LEDs_ON(); |
226 | + | |
227 | - | delay_us(dim_delay_on); |
227 | + | //Begin with all LEDs off |
228 | - | program3_off(); |
228 | + | |
229 | - | delay_us(dim_delay_off); |
229 | + | |
230 | /* ---------------------------------------------------------------- */ | |
231 | /* Main Loop */ | |
232 | /* ---------------------------------------------------------------- */ | |
233 | - | all_LEDs_ON(); |
233 | + | |
234 | - | delay_us(dim_delay_on); |
234 | + | |
235 | - | all_LEDs_OFF(); |
235 | + | |
236 | - | delay_us(dim_delay_off); |
236 | + | |
237 | /* ---------------------------- */ | |
238 | /* Program 1 - NORMAL */ | |
239 | /* ---------------------------- */ | |
240 | - | all_LEDs_ON(); |
240 | + | |
241 | - | delay_us(dim_delay_on); |
241 | + | |
242 | - | program3_off(); |
242 | + | |
243 | - | delay_us(dim_delay_off); |
243 | + | |
244 | program_NORMAL_MODE(); | |
245 | } | |
246 | ||
247 | - | all_LEDs_ON(); |
247 | + | /* ---------------------------- */ |
248 | - | delay_us(dim_delay_on); |
248 | + | /* Program 3 - BRAKES */ |
249 | - | all_LEDs_OFF(); |
249 | + | /* ---------------------------- */ |
250 | - | delay_us(dim_delay_off); |
250 | + | |
251 | ||
252 | while(program_ms_counter < 500) | |
253 | { | |
254 | - | all_LEDs_ON(); |
254 | + | program_BRAKE_MODE(); |
255 | - | delay_us(dim_delay_on); |
255 | + | |
256 | - | program3_off(); |
256 | + | |
257 | - | delay_us(dim_delay_off); |
257 | + | |
258 | program_NORMAL_MODE(); | |
259 | } | |
260 | while(program_ms_counter < 1500) | |
261 | - | all_LEDs_ON(); |
261 | + | |
262 | - | delay_us(dim_delay_on); |
262 | + | program_BRAKE_MODE(); |
263 | - | all_LEDs_OFF(); |
263 | + | |
264 | - | delay_us(dim_delay_off); |
264 | + | |
265 | { | |
266 | program_NORMAL_MODE(); | |
267 | } | |
268 | - | all_LEDs_ON(); |
268 | + | |
269 | - | delay_us(dim_delay_on); |
269 | + | |
270 | - | program3_off(); |
270 | + | program_BRAKE_MODE(); |
271 | - | delay_us(dim_delay_off); |
271 | + | |
272 | while(program_ms_counter < 3000) | |
273 | { | |
274 | program_NORMAL_MODE(); | |
275 | - | all_LEDs_ON(); |
275 | + | |
276 | - | delay_us(dim_delay_on); |
276 | + | |
277 | - | all_LEDs_OFF(); |
277 | + | |
278 | - | delay_us(dim_delay_off); |
278 | + | program_BRAKE_MODE(); |
279 | } | |
280 | while(program_ms_counter < 4000) | |
281 | { | |
282 | - | all_LEDs_ON(); |
282 | + | program_NORMAL_MODE(); |
283 | - | delay_us(dim_delay_on); |
283 | + | |
284 | - | program3_off(); |
284 | + | |
285 | - | delay_us(dim_delay_off); |
285 | + | |
286 | program_BRAKE_MODE(); | |
287 | } | |
288 | while(program_ms_counter < 5000) | |
289 | - | all_LEDs_ON(); |
289 | + | |
290 | - | delay_us(dim_delay_on); |
290 | + | program_NORMAL_MODE(); |
291 | - | all_LEDs_OFF(); |
291 | + | |
292 | - | delay_us(dim_delay_off); |
292 | + | |
293 | - | } |
293 | + | |
294 | - | |
294 | + | program_BRAKE_MODE(); |
295 | - | //program 3 |
295 | + | |
296 | while(program_ms_counter < 6000) | |
297 | { | |
298 | program_NORMAL_MODE(); | |
299 | - | all_LEDs_ON(); |
299 | + | |
300 | - | delay_us(dim_delay_on); |
300 | + | |
301 | - | program2_off(); |
301 | + | |
302 | - | delay_us(dim_delay_off); |
302 | + | program_BRAKE_MODE(); |
303 | } | |
304 | while(program_ms_counter < 7000) | |
305 | { | |
306 | - | all_LEDs_ON(); |
306 | + | program_NORMAL_MODE(); |
307 | - | delay_us(dim_delay_on); |
307 | + | |
308 | - | all_LEDs_OFF(); |
308 | + | |
309 | - | delay_us(dim_delay_off); |
309 | + | /* ------------------------------- */ |
310 | /* Program 2 - LEFT TURN */ | |
311 | /* ------------------------------- */ | |
312 | reset_ms_us_counters(); | |
313 | - | all_LEDs_ON(); |
313 | + | |
314 | - | delay_us(dim_delay_on); |
314 | + | |
315 | - | program2_off(); |
315 | + | |
316 | - | delay_us(dim_delay_off); |
316 | + | program_LEFT_TURN(); |
317 | } | |
318 | while(program_ms_counter < 4000) | |
319 | { | |
320 | - | all_LEDs_ON(); |
320 | + | program_NORMAL_MODE(); |
321 | - | delay_us(dim_delay_on); |
321 | + | |
322 | - | all_LEDs_OFF(); |
322 | + | |
323 | - | delay_us(dim_delay_off); |
323 | + | |
324 | program_LEFT_TURN(); | |
325 | } | |
326 | - | //program 4 |
326 | + | |
327 | { | |
328 | program_NORMAL_MODE(); | |
329 | } | |
330 | - | all_LEDs_ON(); |
330 | + | |
331 | - | delay_us(dim_delay_on); |
331 | + | /* ---------------------------- */ |
332 | - | all_LEDs_OFF(); |
332 | + | /* Program 1 - NORMAL */ |
333 | - | delay_us(dim_delay_off); |
333 | + | /* ---------------------------- */ |
334 | reset_ms_us_counters(); | |
335 | - | |
335 | + | |
336 | - | //program 5 |
336 | + | |
337 | { | |
338 | program_NORMAL_MODE(); | |
339 | } | |
340 | - | all_LEDs_ON(); |
340 | + | |
341 | - | delay_us(dim_delay_on); |
341 | + | /* ------------------------------------ */ |
342 | - | program4_off(); |
342 | + | /* Program 4 - NORMAL FLASHING */ |
343 | - | delay_us(dim_delay_off); |
343 | + | /* ------------------------------------ */ |
344 | reset_ms_us_counters(); | |
345 | ||
346 | while(program_ms_counter < 500) | |
347 | - | all_LEDs_ON(); |
347 | + | |
348 | - | delay_us(dim_delay_on); |
348 | + | all_LEDs_OFF(); |
349 | - | all_LEDs_OFF(); |
349 | + | |
350 | - | delay_us(dim_delay_off); |
350 | + | |
351 | { | |
352 | program_NORMAL_MODE(); | |
353 | } | |
354 | - | all_LEDs_ON(); |
354 | + | |
355 | - | delay_us(dim_delay_on); |
355 | + | |
356 | - | program4_off(); |
356 | + | all_LEDs_OFF(); |
357 | - | delay_us(dim_delay_off); |
357 | + | |
358 | while(program_ms_counter < 2000) | |
359 | { | |
360 | program_NORMAL_MODE(); | |
361 | - | all_LEDs_ON(); |
361 | + | |
362 | - | delay_us(dim_delay_on); |
362 | + | |
363 | - | all_LEDs_OFF(); |
363 | + | |
364 | - | delay_us(dim_delay_off); |
364 | + | all_LEDs_OFF(); |
365 | } | |
366 | while(program_ms_counter < 3000) | |
367 | { | |
368 | - | all_LEDs_ON(); |
368 | + | program_NORMAL_MODE(); |
369 | - | delay_us(dim_delay_on); |
369 | + | |
370 | - | program4_off(); |
370 | + | |
371 | - | delay_us(dim_delay_off); |
371 | + | |
372 | all_LEDs_OFF(); | |
373 | } | |
374 | while(program_ms_counter < 4000) | |
375 | - | all_LEDs_ON(); |
375 | + | |
376 | - | delay_us(dim_delay_on); |
376 | + | program_NORMAL_MODE(); |
377 | - | all_LEDs_OFF(); |
377 | + | |
378 | - | delay_us(dim_delay_off); |
378 | + | |
379 | { | |
380 | all_LEDs_OFF(); | |
381 | } | |
382 | - | all_LEDs_ON(); |
382 | + | |
383 | - | delay_us(dim_delay_on); |
383 | + | |
384 | - | program4_off(); |
384 | + | program_NORMAL_MODE(); |
385 | - | delay_us(dim_delay_off); |
385 | + | |
386 | while(program_ms_counter < 5500) | |
387 | { | |
388 | all_LEDs_OFF(); | |
389 | - | all_LEDs_ON(); |
389 | + | |
390 | - | delay_us(dim_delay_on); |
390 | + | |
391 | - | all_LEDs_OFF(); |
391 | + | |
392 | - | delay_us(dim_delay_off); |
392 | + | program_NORMAL_MODE(); |
393 | } | |
394 | while(program_ms_counter < 6500) | |
395 | { | |
396 | - | all_LEDs_ON(); |
396 | + | all_LEDs_OFF(); |
397 | - | delay_us(dim_delay_on); |
397 | + | |
398 | - | program4_off(); |
398 | + | |
399 | - | delay_us(dim_delay_off); |
399 | + | |
400 | program_NORMAL_MODE(); | |
401 | } | |
402 | ||
403 | - | all_LEDs_ON(); |
403 | + | /* ------------------------------- */ |
404 | - | delay_us(dim_delay_on); |
404 | + | /* Program 2 - LEFT TURN */ |
405 | - | all_LEDs_OFF(); |
405 | + | /* ------------------------------- */ |
406 | - | delay_us(dim_delay_off); |
406 | + | |
407 | ||
408 | while(program_ms_counter < 3000) | |
409 | { | |
410 | - | all_LEDs_ON(); |
410 | + | program_LEFT_TURN(); |
411 | - | delay_us(dim_delay_on); |
411 | + | |
412 | - | program4_off(); |
412 | + | |
413 | - | delay_us(dim_delay_off); |
413 | + | |
414 | program_NORMAL_MODE(); | |
415 | } | |
416 | while(program_ms_counter < 6500) | |
417 | - | all_LEDs_ON(); |
417 | + | |
418 | - | delay_us(dim_delay_on); |
418 | + | program_LEFT_TURN(); |
419 | - | all_LEDs_OFF(); |
419 | + | |
420 | - | delay_us(dim_delay_off); |
420 | + | |
421 | { | |
422 | program_NORMAL_MODE(); | |
423 | } | |
424 | - | all_LEDs_ON(); |
424 | + | |
425 | - | delay_us(dim_delay_on); |
425 | + | |
426 | - | program4_off(); |
426 | + | |
427 | - | delay_us(dim_delay_off); |
427 | + | |
428 | } |