풀업이 된 푸시버튼이 2번 핀에 연결되었다고 가정하자. 이 버튼은 외부에 풀업이 된 상태이기 때문에 안 눌려진 상태에서는 1값이 읽혀지고 눌려지면 0값이 읽힌다. 부저는 11번핀에 연결되었다고 가정한다.
이 때 버튼이 눌려지는 시점에서 멜로디가 울리도록 하는 프로그램은 다음과 같다. tone()함수는 ISR 내부에서는 정상적으로 동작하기 않기 때문에 인터럽트 기능은 사용할 수 없다는 점에 유의하자.
#include "pitches.h"#define BUZ 11#define K 2void setup() {pinMode(K, INPUT);}int iBtnPrev = 1; //버튼의 이전 상태값을 저장하는 변수void loop() {int iBtn = digitalRead(K);if (iBtn == 0 && iBtnPrev == 1)melody();iBtnPrev = iBtn;}void melody() {tone(BUZ, NOTE_C4);delay(100);tone(BUZ, NOTE_D4);delay(100);tone(BUZ, NOTE_E4);delay(100);noTone(BUZ);} |
이 프로그램을 다운로드하면 버튼이 눌리는 순간 ‘도레미’ 멜로디가 울린다.
댓글 없음:
댓글 쓰기