1
10
11
12#include <EEPROM.h>
13#include <OneButton.h>
14
15
16#define ON LOW
17#define OFF HIGH
18
19
20int pinAnchor = A0;
21int pinRunning = A1;
22int pinBilge = A2;
23int pinWater = A3;
24int pinWiperL = A4;
25int pinWiperR = A5;
26
27
28int relAnchor = 12;
29int relRunning = 11;
30int relBilge = 9;
31int relWater = 8;
32int relWiperL = 7;
33int relWiperR = 6;
34
35
36int febWiperL = A6;
37int febWiperR = A7;
38
39
40bool flWiperL;
41bool flWiperR;
42
43
44OneButton btnAnchor(pinAnchor, true);
45OneButton btnRunning(pinRunning, true);
46OneButton btnBilge(pinBilge, true);
47OneButton btnWater(pinWater, true);
48OneButton btnWiperL(pinWiperL, true);
49OneButton btnWiperR(pinWiperR, true);
50
51
52void setup()
53{
54
55 pinMode(pinAnchor, INPUT_PULLUP);
56 pinMode(pinRunning, INPUT_PULLUP);
57 pinMode(pinBilge, INPUT_PULLUP);
58 pinMode(pinWater, INPUT_PULLUP);
59 pinMode(pinWiperL, INPUT_PULLUP);
60 pinMode(pinWiperL, INPUT_PULLUP);
61
62
63 pinMode(relAnchor, OUTPUT);
64 pinMode(relRunning, OUTPUT);
65 pinMode(relBilge, OUTPUT);
66 pinMode(relWater, OUTPUT);
67 pinMode(relWiperL, OUTPUT);
68 pinMode(relWiperR, OUTPUT);
69
70
71 digitalWrite(relAnchor, OFF);
72 digitalWrite(relRunning, OFF);
73 digitalWrite(relBilge, OFF);
74 digitalWrite(relWater, OFF);
75 digitalWrite(relWiperL, OFF);
76 digitalWrite(relWiperR, OFF);
77
78
79 btnAnchor.attachClick(OnAnchorPressed);
80 btnRunning.attachClick(OnRunningPressed);
81 btnBilge.attachClick(OnBilgePressed);
82 btnWater.attachClick(OnWaterPressed);
83 btnWiperL.attachClick(OnWiperLPressed);
84 btnWiperR.attachClick(OnWiperRPressed);
85 btnWiperL.attachDuringLongPress(OnWiperLongPressed);
86 btnWiperR.attachDuringLongPress(OnWiperLongPressed);
87
88 if (EEPROM.read(0) == 1)
89 {
90 digitalWrite(relWater, ON);
91 }
92 else
93 {
94 digitalWrite(relWater, OFF);
95 }
96
97 flWiperL = false;
98 flWiperR = false;
99}
100
101
102void loop()
103{
104
105 btnAnchor.tick();
106 btnRunning.tick();
107 btnBilge.tick();
108 btnWater.tick();
109 btnWiperL.tick();
110 btnWiperR.tick();
111
112
113
114 if (flWiperL)
115 {
116
117
118
119 digitalWrite(relWiperL, OFF);
120 flWiperL = false;
121
122 }
123
124 if (flWiperR)
125 {
126
127
128
129 digitalWrite(relWiperR, OFF);
130 flWiperR = false;
131
132 }
133
134
135}
136
137
138
139void OnAnchorPressed()
140{
141 if (digitalRead(relAnchor) == OFF)
142 {
143 digitalWrite(relAnchor, ON);
144 digitalWrite(relRunning, OFF);
145 }
146 else
147 {
148 digitalWrite(relAnchor, OFF);
149 }
150}
151
152void OnRunningPressed()
153{
154 if (digitalRead(relRunning) == OFF)
155 {
156 digitalWrite(relRunning, ON);
157 digitalWrite(relAnchor, OFF);
158 }
159 else
160 {
161 digitalWrite(relRunning, OFF);
162 }
163}
164
165void OnBilgePressed()
166{
167 if (digitalRead(relBilge) == OFF)
168 {
169 digitalWrite(relBilge, ON);
170 }
171 else
172 {
173 digitalWrite(relBilge, OFF);
174 }
175}
176
177void OnWaterPressed()
178{
179
180
181
182 if (digitalRead(relWater) == LOW)
183 {
184 digitalWrite(relWater, HIGH);
185 EEPROM.update(0, 1);
186 }
187 else
188 {
189 digitalWrite(relWater, LOW);
190 EEPROM.update(0, 0);
191 }
192}
193
194void OnWiperLPressed()
195{
196 if (digitalRead(relWiperL) == OFF)
197 {
198 digitalWrite(relWiperL, ON);
199 }
200 else
201 {
202 flWiperL = true;
203 }
204}
205
206void OnWiperRPressed()
207{
208 if (digitalRead(relWiperR) == OFF)
209 {
210 digitalWrite(relWiperR, ON);
211 }
212 else
213 {
214 flWiperR = true;
215 }
216}
217
218void OnWiperLongPressed()
219{
220 digitalWrite(relWiperL, ON);
221 digitalWrite(relWiperR, ON);
222}
223
224