-
Notifications
You must be signed in to change notification settings - Fork 0
/
sketch_mar27a-2.ino
135 lines (116 loc) · 3.21 KB
/
sketch_mar27a-2.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
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
123
124
125
126
127
128
129
130
131
132
133
134
135
const int buttonPin0 = 0; // the number of the pushbutton pin
const int buttonPin1 = 1;
const int buttonPin2 = 2;
const int buttonPin3 = 3;
const int led = 5 ;
// Variables will change:
int a = -1 ;
int ledState = HIGH; // the current state of the output pin
int buttonState0; // the current reading from the input pin
int buttonState1; // the current reading from the input pin
int buttonState2; // the current reading from the input pin
int buttonState3; // the current reading from the input pin
int b ;
int pre_a = -1 ;
int lastButtonState0 = LOW; // the previous reading from the input pin
int lastButtonState1 = LOW; // the previous reading from the input pin
int lastButtonState2 = LOW; // the previous reading from the input pin
int lastButtonState3 = LOW; // the previous reading from the input pin
unsigned long lastDebounceTime = 0; // the last time the output pin was toggled
unsigned long debounceDelay = 50; // the debounce time; increase if the output flickers
int readingled ;
unsigned long delaytime = 2000 ;
unsigned long lasttime = 0 ;
void setup() {
Serial.begin(2000000);
pinMode(buttonPin0, INPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(led , INPUT) ;
}
void loop() {
// read the state of the switch into a local variable:
int reading0 = digitalRead(buttonPin0);
int reading1 = digitalRead(buttonPin1);
int reading2 = digitalRead(buttonPin2);
int reading3 = digitalRead(buttonPin3);
int readingled = digitalRead(led) ;
if (readingled == 1 && b == 0)
{
b = 1;
delay(50);
Serial.println("A");
pre_a = -1;
a = -1 ;
}
else if(readingled == 1 && b== 1)
{
b = 1;
}
else if(readingled == 0 && b ==0 )
{
b = 0;
}
else
{
b = 0 ;
delay(50) ;
Serial.println("B");
}
// If the switch changed, due to noise or pressing:
if (reading0 != lastButtonState0 || reading1 != lastButtonState1 || reading2 != lastButtonState2 || reading3 != lastButtonState3 ) {
// reset the debouncing timer
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading0 != buttonState0) {
buttonState0 = reading0;
if (buttonState0 == HIGH) {
a=0;
}
}
else if (reading1 != buttonState1) {
buttonState1 = reading1;
if (buttonState1 == HIGH) {
a=1;
}
}
else if (reading2 != buttonState2) {
buttonState2 = reading2;
if (buttonState2 == HIGH) {
a=2;
}
}
else /*(reading3 != buttonState3)*/ {
buttonState3 = reading3;
if (buttonState3 == HIGH) {
a=3;
}
}
}
lastButtonState0 = reading0;
lastButtonState1 = reading1;
lastButtonState2 = reading2;
lastButtonState3 = reading3;
if(pre_a == a){
if(lasttime == 0){
lasttime = millis() ;
}
else
lasttime = lasttime ;
}
else{
lasttime = 0;
}
if(pre_a != a){
Serial.println(a);
}
else{
a = a;
pre_a = pre_a ;
if((millis() - lasttime) > delaytime) {Serial.println(a); lasttime = 0 ;}
else {a = a;pre_a = pre_a ;}
}
pre_a = a ;
}