풀업이 된 푸시버튼이 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);} |
이 프로그램을 다운로드하면 버튼이 눌리는 순간 ‘도레미’ 멜로디가 울린다.
'하드웨어 > 아두이노' 카테고리의 다른 글
아두이노 + Blynk 를 이용한 사물인터넷 구현 (0) | 2016.12.16 |
---|---|
아두이노 프로그램의 volatile 지시자 (0) | 2015.11.26 |
아두이노 아날로그핀 연습문제 (0) | 2015.11.11 |
아두이노의 tone() 함수로 멜로디 연주하기 (0) | 2015.11.04 |
NewPing 라이브러리로 HR04 초음파 센서 거리 측정하기 (0) | 2015.10.05 |