기기 코딩 23 / 31
부저로 멜로디 연주하기
피에조 부저로 '작은 별'을 연주해요. 음 높이는 숫자(주파수)로 정해요.
- 준비물: 피에조 부저(수동형) 1개, 점퍼선 2개
| 부품 다리 | 아두이노 Uno | ESP32 |
|---|---|---|
| 부저 + (긴 다리 또는 + 표시) | 6번 | GPIO 18 |
| 부저 − | GND | GND |
부저에는 '능동형'과 '수동형'이 있어요. 능동형은 전기만 주면 한 가지 소리로 '삐-' 울려서 멜로디를 못 내요. 스티커가 붙어 있고 뒷면이 막혀 있으면 대개 능동형이에요. 멜로디는 수동형으로 해요.
// 작은 별#ifdef ARDUINO_ARCH_ESP32const int BUZZER = 18;← ESP32 보드면 이쪽 번호를 써요 (보드에 따라 자동으로 골라져요)#elseconst int BUZZER = 6;#endif// 도=262 레=294 미=330 파=349 솔=392 라=440← 음 높이 = 1초에 떨리는 횟수(Hz)int notes[] = {262, 262, 392, 392, 440, 440, 392, 349, 349, 330, 330, 294, 294, 262};← 도도솔솔라라솔 파파미미레레도int beats[] = {1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2};← 박자 (2는 두 배 길게)const int COUNT = 14;← 음표 개수void setup() { for (int i = 0; i < COUNT; i++) {← 음표를 하나씩 차례로 int ms = beats[i] * 400;← 한 박자 = 0.4초 tone(BUZZER, notes[i], ms - 50);← 소리 내기 (음과 음 사이를 살짝 띄워요) delay(ms); } noTone(BUZZER);← 소리 끄기}void loop() {← 한 번만 연주하니까 비워 둬요}- 확인: 업로드가 끝나면 한 번 연주해요. 다시 듣고 싶으면 보드의 리셋 버튼(ESP32는 EN 버튼)을 눌러요.
바꿔 보기: ① 400을 바꿔 빠르게·느리게 ② 숫자를 모두 두 배로 하면 한 옥타브 높아져요 ③ 버튼 예제와 합쳐서 버튼을 누르면 연주하게 해 보세요.
💬 막히면 도우미에게 물어보세요
오류가 나면 오류 문구를 그대로 붙여 넣으면 더 정확해요. 예: “부저에서 멜로디 대신 '삐-' 소리만 나요”