[faduino3-7] 산업용 아두이노에서 라이브러리를 사용하지 않고 버튼 2개를 동시에 디바운스 처리를 해보는 예제!
프로그래밍/산업용아두이노(fa-duino) 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
반응형
'프로그래밍 > 산업용아두이노(fa-duino)' 카테고리의 다른 글
[faduino3-9] 산업용 아두이노에서 조광형버튼을 누르면 램프가 켜지고 안누르면 꺼지는 예제! (0) | 2023.06.30 |
---|---|
[faduino3-8] 산업용 아두이노에서 누름버튼을 짧게 누른것과 길게 누른것을 인식시켜보는 예제! (0) | 2023.06.30 |
[faduino3-6] 산업용 아두이노에서 라이브러리를 사용안하고 버튼을 디바운스 처리하는 예제!(버튼을 누를때 발생) (0) | 2023.06.30 |
[faduino3-5] 산업용 아두이노에서 라이브러리를 사용안하고 버튼을 디바운스 처리하는 예제!(버튼을 눌렀다가 뗄때 발생) (0) | 2023.06.25 |
[faduino3-4] 산업용 아두이노로 누름버튼을 눌렀다가 뗀 시간 측정해보는 예제! (0) | 2023.06.25 |