-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDebounceDelay.ino
72 lines (60 loc) · 1.29 KB
/
DebounceDelay.ino
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
#define BUTTONPIN 2
#define RED 8
#define YELLOW 7
#define GREEN 12
int redState = LOW;
int buttonState;
int toggleLedState = 1;
unsigned long timeStart;
unsigned long interval = 40;
unsigned long timeRedStart;
unsigned long redInterval = 1000;
void setProgram() {
timeStart = millis();
timeRedStart = millis();
Serial.begin(115200);
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BUTTONPIN, INPUT);
buttonState = digitalRead(BUTTONPIN);
}
void redLed() {
if (redState == LOW) {
redState = HIGH;
} else {
redState = LOW;
}
digitalWrite(RED, redState);
}
void toggleLed2_3() {
if (buttonState == HIGH) {
if (toggleLedState == 1) {
digitalWrite(YELLOW, HIGH);
digitalWrite(GREEN, LOW);
toggleLedState = 2;
} else {
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, HIGH);
toggleLedState = 1;
}
}
}
void setup() {
setProgram();
}
void loop() {
unsigned long timeNow = millis();
if (timeNow - timeStart > interval) {
int buttonNewState = digitalRead(BUTTONPIN);
if (buttonNewState != buttonState) {
timeStart = timeNow;
buttonState = buttonNewState;
toggleLed2_3();
}
}
if (timeNow - timeRedStart > redInterval) {
redLed();
timeRedStart = timeNow;
}
}