#define Button1 4
#define Button2 2
#define Led1 32
#define Led2 33
#define Initled 23
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("버튼 테스트");
pinMode(Button1, INPUT);
pinMode(Button2, INPUT);
pinMode(Led1, OUTPUT);
pinMode(Led2, OUTPUT);
pinMode(Initled, OUTPUT);
digitalWrite(Led1, HIGH);
delay(500);
digitalWrite(Led2, HIGH);
delay(1000);
digitalWrite(Led1, LOW);
digitalWrite(Led2, LOW);
}
int click_Button_num = -1;
bool click_One = false;
bool click_Long = false;
bool click_Out = false;
int click_Num = 0;
unsigned long o_Time = 0;
void loop() {
// put your main code here, to run repeatedly:
unsigned long i_Time = millis();
if(i_Time < o_Time) o_Time = millis();
if(digitalRead(Button1) == true && click_One == false){
//Serial.println("버튼 1번 클릭");
click_Button_num = Button1;
click_One = true;
}
if(digitalRead(Button2) == true && click_One == false){
//Serial.println("버튼 2번 클릭");
click_Button_num = Button2;
click_One = true;
}
if(click_One == true && click_Out == false && i_Time - o_Time >= 50){
o_Time = millis();
if(digitalRead(click_Button_num) == false){
if(click_Num >= 2){
click_Out = true;
//Serial.println(" 짧게 눌러버림 ");
}
if(click_Num >= 40){
click_Long = true;
//Serial.println(" 길게 눌러버림 ");
}
click_One = false;
click_Num = 0;
//Serial.println("-- 클릭 끝 --");
digitalWrite(Initled, LOW);
}else{
click_Num++;
//Serial.print(click_Button_num);
//Serial.print(" 을 ");
//Serial.print(click_Num);
//Serial.println(" 번 누르고 있음");
if(click_Num >= 40){
if(click_Num % 5 == 0){
digitalWrite(Initled, !digitalRead(Initled));
}
}
}
}
if(click_Out == true){
switch(click_Button_num){
case Button1:
if(click_Long){
Serial.print("버튼 1번을 길게");
Serial.println(" : LED 모두 켜짐");
digitalWrite(Led1, HIGH);
digitalWrite(Led2, HIGH);
}else{
Serial.println("버튼 1번을 짧게");
digitalWrite(Led1, !digitalRead(Led1));
}
break;
case Button2:
if(click_Long){
Serial.print("버튼 2번을 길게");
Serial.println(" : LED 모두 꺼짐");
digitalWrite(Led1, LOW);
digitalWrite(Led2, LOW);
}else{
Serial.println("버튼 2번을 짧게");
digitalWrite(Led2, !digitalRead(Led2));
}
break;
default:
break;
}
click_Button_num = -1;
click_Out = false;
click_Long = false;
}
}