BASIC4MCU | 질문게시판 | 부저와 적외선 리모컨 코딩 관련 질문
페이지 정보
작성자 기무 작성일2021-12-10 18:20 조회712회 댓글2건본문
if (deS.value == 0xFF906F && lcd_status == HIGH && game_start == HIGH) {
lcd.clear(); lcd.home();
lcd.print("Q1");
lcd.setCursor(0, 1);
lcd.print("1.C 2.D 3.E 4.F");
tone(8, m_q1, noteDuration);
game_q1 = HIGH;
}
irrecv.resume();
delay(100);
if (deS.value == 0xFF30CF && game_q1 == HIGH) { // 1번
digitalWrite(led1_pin, HIGH);
lcd.clear(); lcd.home();
lcd.print("Incorrect!");
lcd.setCursor(0, 1);
lcd.print(count);
game_q1 = LOW;
game_q2 = HIGH;
}
else if (deS.value == 0xFF18E7 && game_q1 == HIGH) { // 2번
digitalWrite(led1_pin, HIGH);
lcd.clear(); lcd.home();
lcd.print("Incorrect!");
lcd.setCursor(0, 1);
lcd.print(count);
game_q1 = LOW;
game_q2 = HIGH;
}
부저를 통해 소리를 들려준 이후 lcd 화면에 문제를 띄워주고,리모컨의 숫자 버튼을 누르면 정답인지 아닌지 lcd에 표시해주는 코드 중 일부입니다.그런데 부저가 울린 이후에 버튼을 눌러도 정답 화면으로 넘어가지를 않네요...왜 안되는지 이것저것 고쳐보다가tone 함수를 빼면, 즉 부저를 안쓰면 버튼이 먹힙니다.그런데 저는 부저를 꼭 써야 하거든요...어떻게 방법이 없을까요??
댓글 2
조회수 712master님의 댓글
master 작성일
단일음의 삐~ 부저는 회로내장의 부저를 사용해야하며
(허접하지만)딩동댕 같은 멜로디는 tone 함수를 사용해야 합니다.
단일음의 부저라도 괜찮다면 부저를 새로 구입하고 LED 출력하듯이 하면 소리가 납니다.
멜로디가 필요해서 반드시 tone 함수를 사용해야 한다면
아두이노 나노 같은 크기가 작은 보드를 사용해서 tone을 구현하면 어떨까 싶습니다.
아두이노 핀끼리 연결하고(나노는 입력, 우노는 출력)
나노에서는 핀을 체크하다가 핀이 HIGH일 때 tone을 체크하고
핀이 LOW면 noTone을 출력하면 될 것 같습니다.
물론 고수라면 우노안에서 처리가 가능합니다.
기무님의 댓글
기무
답변 감사합니다.
검색해보니까 IRremoteInt.h를 수정하라고 하는데 제 라이브러리엔 없어서
zip 파일로 되어있는거 찾아보니 거기엔 있어서 그걸로 바꾸고 수정했더니 해결됐습니다.