이번에는 부저(buzzer)를 이용한 실험을 해 보겠다. 부저는 소리를 내는 부품으로서 소리 파형을 만들어서 인가하여야 하는 것과 그냥 전압을 걸면 소리가 나는 두 가지 종류가 있으나 실험의 편의상 후자를 택해서 진행한다.


[그림 1] 부저의 외형


부저는 극성이 있으며 조금 긴 다리가 (+)극이고 짧은 쪽은 (-)이다. 극성에 맞게 전압을 걸면 삐~~ 하는 소리가 발생한다. 아두이노 우노의 11번 핀에 부저의 (+)를 꽂으면 (-)핀은 GND에 들어맞게 되어 있다.


[그리 2] 아두이노의 11번 핀에 부저의 (+)를, GND핀에 (-)를 연결했다.


이렇게 연결했다면 부저를 울리는 것은 LED를 동작시키는 것과 똑같다. 단순히 1초 간격으로 삑삑 거리는 프로그램은 다음과 같이 하면 된다.


#define BUZ 11

void setup() {
    pinMode(BUZ, OUTPUT);
}
void loop() {
    digitalWrite(BUZ, HIGH); // 부저가 울리기 시작한다.
    delay(50);
    digitalWrite(BUZ, LOW); // 부저가 멈춘다
    delay(950);
}


이 예제에서는 부저가 울리는 시간을 50ms로 설정했으므로 짧은 시간 동안 ‘삑’하는 소리가 날 것이다. loop()함수 안에 있으므로 이것이 1초 간격으로 반복된다.


 두 번째 예제로 13번 핀에 물려 있는 LED와 조합해서 동작하도록 해보자. LED는 0.5초마다 한 번씩 켜지고 부저는 1초 마다 한 번씩 울리게 해서 마치 타이머처럼 동작하도록 하는 예제이다.


#define LED 13

#define BUZ 11

void setup() {
    pinMode(LED, OUTPUT);
    pinMode(BUZ, OUTPUT);
}
void loop() {
    digitalWrite(LED, HIGH);
    digitalWrite(BUZ, HIGH);
    delay(50);
    digitalWrite(BUZ, LOW);
    delay(200);
    digitalWrite(LED, LOW);
    delay(250);
    digitalWrite(LED, HIGH);
    delay(250);
    digitalWrite(LED, LOW);
    delay(250);
}



Posted by 살레시오
,