티스토리 뷰

반응형

🎵 아두이노로 간단한 오르골 만들기

아두이노를 활용하여 간단한 오르골을 만드는 방법을 설명하겠습니다. 이 프로젝트에서는 **부저(Buzzer)**를 사용하여 멜로디를 연주하며, 버튼을 눌러 연주를 시작할 수 있도록 설계합니다.


📌 1. 준비물

아두이노 보드 (Uno, Mega, Nano 등)
부저 (Piezo Buzzer)
푸시 버튼 (Push Button)
저항 (10kΩ, 1개)
브레드보드 및 점퍼 와이어


📌 2. 회로 연결 (Fritzing 회로도)

🛠️ 회로 구성

  1. 부저 연결
    • 부저의 (+) 단자를 아두이노 9번 핀에 연결
    • 부저의 (-) 단자GND에 연결
  2. 버튼 연결
    • 버튼의 한쪽을 아두이노 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