반응형

안녕하세요!
녹칸다입니다!

녹칸다의 산업용 아두이노(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 

 

반응형
Posted by 덕력킹
,