프로그래밍/산업용아두이노(fa-duino)
[faduino3-7] 산업용 아두이노에서 라이브러리를 사용하지 않고 버튼 2개를 동시에 디바운스 처리를 해보는 예제!
덕력킹
2023. 6. 30. 22:37
반응형
안녕하세요!
녹칸다입니다!
녹칸다의 산업용 아두이노(fa-duino)의 빠른 내용 전달을 위해서 코드와 작동결과만을 별도로 정리해보도록 하겠습니다~!
녹칸다의 산업용 아두이노 3편에서 7번예제를 정리해보도록 하겠습니다~!
이번 예제는 아래와 같은 목표가 있습니다~~!
1.산업용 아두이노(faduino)에 누름버튼 2개를 각각 37과 36에 연결한다!
2.누름버튼 2개의 디바운스 처리를 해서 동시에 작동가능하도록 할 것!
예제의 소스코드는 아래와 같습니다~!
//37번에 연결된 버튼에 디바운스 처리를 하시오!
//버튼을 누르면 상승엣지가 발생하고
//상승엣지가 발생한 지점에서
//HIGH신호가 일정시간동안 유지가 된다면
//버튼을 누른것으로 간주하겠다!
bool old_btn1 = LOW;
bool btn_pressed1 = false;
unsigned long t1 = 0;
bool old_btn2 = LOW;
bool btn_pressed2 = false;
unsigned long t2 = 0;
void setup() {
Serial.begin(9600); //결과를 PC에 출력하겠다!
pinMode(37,INPUT); //빨간버튼
pinMode(36,INPUT); //녹색버튼
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
}
void loop() {
bool now_btn1 = digitalRead(37);
bool now_btn2 = digitalRead(36);
if(old_btn1 == LOW && now_btn1 == HIGH){
//상승엣지
t1 = millis(); //상승엣지의 시간을 저장한다!
btn_pressed1 = true;
}else if(old_btn1 == HIGH && now_btn1 == HIGH){
//버튼을 누르고 있는중
if(millis() - t1 > 10 && btn_pressed1 == true){
//버튼이 눌려진것이다!
Serial.println("버튼1이 눌러졌다");
btn_pressed1 = false;
}
}
if(old_btn2 == LOW && now_btn2 == HIGH){
//상승엣지
t2 = millis(); //상승엣지의 시간을 저장한다!
btn_pressed2 = true;
}else if(old_btn2 == HIGH && now_btn2 == HIGH){
//버튼을 누르고 있는중
if(millis() - t2 > 10 && btn_pressed2 == true){
//버튼이 눌려진것이다!
Serial.println("버튼2가 눌러졌다");
btn_pressed2 = false;
}
}
old_btn1 = now_btn1;
old_btn2 = now_btn2;
}
예제의 실행결과는 녹칸다의 라이브방송중 해당위치를 링크하도록 하겠습니다~~!(원본이 3시간임)
https://youtu.be/uXZTirk2SYw?t=4303
반응형