티스토리 뷰
반응형
🎵 아두이노로 간단한 오르골 만들기
아두이노를 활용하여 간단한 오르골을 만드는 방법을 설명하겠습니다. 이 프로젝트에서는 **부저(Buzzer)**를 사용하여 멜로디를 연주하며, 버튼을 눌러 연주를 시작할 수 있도록 설계합니다.
📌 1. 준비물
✅ 아두이노 보드 (Uno, Mega, Nano 등)
✅ 부저 (Piezo Buzzer)
✅ 푸시 버튼 (Push Button)
✅ 저항 (10kΩ, 1개)
✅ 브레드보드 및 점퍼 와이어
📌 2. 회로 연결 (Fritzing 회로도)
🛠️ 회로 구성
- 부저 연결
- 부저의 (+) 단자를 아두이노 9번 핀에 연결
- 부저의 (-) 단자를 GND에 연결
- 버튼 연결
- 버튼의 한쪽을 아두이노 7번 핀에 연결
- 다른 쪽을 GND에 연결
- 버튼과 5V 사이에 10kΩ 저항을 연결 (풀업 저항 역할)
🔧 회로도
(아래 그림을 참고하세요!)
+5V
│
├── [10kΩ 저항] ───┐
│ │
[Button]┘ ├─── (7번 핀)
│ │
└─── GND
[Buzzer]
(+) ─── (9번 핀)
(-) ─── GND
📌 3. 아두이노 코드
🎼 오르골 코드 예제
아래 코드는 버튼을 누르면 간단한 멜로디를 재생하는 코드입니다.
#define BUZZER 9 // 부저 핀
#define BUTTON 7 // 버튼 핀
int melody[] = {262, 294, 330, 349, 392, 440, 494, 523}; // 도레미파솔라시도 주파수
int noteDurations[] = {4, 4, 4, 4, 4, 4, 4, 4}; // 각 음표의 길이
void setup() {
pinMode(BUZZER, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP); // 내부 풀업 저항 사용
}
void loop() {
if (digitalRead(BUTTON) == LOW) { // 버튼이 눌리면
playMelody();
}
}
void playMelody() {
for (int i = 0; i < 8; i++) {
int duration = 1000 / noteDurations[i];
tone(BUZZER, melody[i], duration);
delay(duration * 1.3);
noTone(BUZZER);
}
}
📌 4. 코드 설명
✅ melody[]: 도, 레, 미, 파, 솔, 라, 시, 도 음의 주파수
✅ noteDurations[]: 각 음의 길이 (1/4박자)
✅ tone(BUZZER, 주파수, 지속시간): 특정 주파수의 음을 출력
✅ noTone(BUZZER): 소리 끄기
📌 5. 실행 방법
1️⃣ 아두이노에 코드를 업로드
2️⃣ 버튼을 누르면 멜로디가 연주됨
3️⃣ 버튼을 떼면 멜로디가 멈춤
📌 6. 추가 기능 (확장 가능)
✨ 더 긴 멜로디: 다양한 노래의 주파수를 melody[] 배열에 추가
✨ 멀티 버튼 추가: 여러 버튼을 사용해 다른 멜로디 연주
✨ LED 연동: 음악과 함께 LED가 점멸하도록 설정
🎶 마무리
이제 아두이노로 간단한 오르골을 제작할 수 있습니다! 원하는 멜로디를 추가하여 나만의 오르골을 만들고 확장해 보세요. 🚀
반응형
'[IoT] 아두이노 (Arduino)' 카테고리의 다른 글
버튼으로 LED 제어하기 (아두이노) (0) | 2024.12.22 |
---|