-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlights.h
122 lines (95 loc) · 2.62 KB
/
lights.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
* lights.h
*
* purpose: maintains the proper outputs of the lights and
* adds fancy functionality with non-cumbersome
* functions.
*
* date: 4/28/18
* by: Ashton Stephens
*/
#ifndef LIGHTS_H_
#define LIGHTS_H_
#define LED_OFF 0
#define LED_ON_SOLID 1
#define LED_ON_FLASH 2
//#define FLASH_MASK 1 << 9
#define FLASH_MASK 1 << 6
struct light
{
int pin;
char state;
// constructor
light (int pin): pin(pin), state(LED_OFF) {}
void on_solid () {state = LED_ON_SOLID;}
void on_flash () {state = LED_ON_FLASH;}
void off () {state = LED_OFF;}
void reset () {state = LED_OFF;}
void maintain ()
{
switch (state) {
case LED_ON_SOLID :
digitalWrite(pin,HIGH);
break;
case LED_ON_FLASH :
digitalWrite(pin,!!(millis()&FLASH_MASK));
break;
case LED_OFF :
digitalWrite(pin,LOW);
break;
}
}
};
class lights
{
public:
light yellow_path;
light blue_path;
light red_path;
light green_state;
light blue_state;
light red_state;
light headlights;
light breaklights;
light lturn;
light rturn;
lights ( int yellow_path_pin, int blue_path_pin, int red_path_pin,
int green_state_pin, int blue_state_pin, int red_state_pin,
int headlights_pin, int breaklights_pin,
int lturn_pin, int rturn_pin):
yellow_path(yellow_path_pin), blue_path(blue_path_pin), red_path(red_path_pin),
green_state(green_state_pin), blue_state(blue_state_pin), red_state(red_state_pin),
headlights(headlights_pin), breaklights(breaklights_pin),
lturn(lturn_pin), rturn(rturn_pin) {}
void maintain ()
{
yellow_path.maintain();
blue_path.maintain();
red_path.maintain();
green_state.maintain();
blue_state.maintain();
red_state.maintain();
headlights.maintain();
breaklights.maintain();
lturn.maintain();
rturn.maintain();
}
bool flashing_on() {return !!(millis()&FLASH_MASK);}
void reset ()
{
yellow_path.reset();
blue_path.reset();
red_path.reset();
green_state.reset();
blue_state.reset();
red_state.reset();
headlights.reset();
breaklights.reset();
lturn.reset();
rturn.reset();
}
};
#undef LED_OFF
#undef LED_ON_SOLID
#undef LED_ON_FLASH
#endif