아두이노

아두이노를 이용한 간단한 피아노 만들기 🎹

모빌리티키즈 2025. 5. 13. 11:13
728x90
반응형

아두이노와 피에조 버저를 활용하여 간단한 피아노를 만들 수 있습니다. 이번 프로젝트에서는 버튼을 눌러 각 음계를 연주할 수 있도록 구현해 보겠습니다. 누구나 쉽게 따라 할 수 있으며, 코드와 회로도 설명을 통해 이해를 돕겠습니다.

1. 준비물

먼저 필요한 부품을 준비하세요.

필요한 부품:

  • 아두이노 (Uno, Mega 등)
  • 피에조 버저
  • 푸시 버튼 7개
  • 점퍼 와이어
  • 브레드보드

2. 회로 구성

버튼을 사용하여 원하는 음을 출력하도록 회로를 구성합니다.

회로 연결 방법

  1. 피에조 버저 연결:
    • (+) 단자를 아두이노의 디지털 12번 핀에 연결
    • (-) 단자를 GND(접지)와 연결
  2. 버튼 연결:
    • 7개의 버튼을 아두이노의 디지털 2~8번 핀에 연결
    • 버튼의 반대쪽 단자는 GND와 연결하여 신호 입력을 받도록 설정

3. 코드 설명

아래 코드를 아두이노에 업로드하면 버튼을 눌러 음을 연주할 수 있습니다.

 

 

const int piezo=12;
int sw[7]={2,3,4,5,6,7,8};
int freq[7]={262, 294, 330, 349, 392, 440, 494};
int val=0;

void setup() {
  pinMode(piezo, OUTPUT);
  for (int k=0; k<7; k++){
    pinMode(sw[k], INPUT);
}
}

 
void loop() {
  
  for (int k=0; k<7; k++){
    val=digitalRead(sw[k]);
    if(val){
      tone(piezo, freq[k]);
      while(digitalRead(sw[k]));
      noTone(piezo);
    }
  }
}

4. 코드 분석

이 코드에서 수행하는 기능을 정리해 보겠습니다.

  • piezo 변수: 피에조 버저가 연결된 핀 번호 (12번 핀)
  • sw[] 배열: 각 버튼이 연결된 핀 번호 (2~8번 핀)
  • freq[] 배열: 각 버튼이 연주할 음계의 주파수
  • setup() 함수:
    • 피에조 버저 핀을 출력으로 설정
    • 버튼을 입력으로 설정하여 신호를 받을 수 있도록 준비
  • loop() 함수:
    • 각 버튼의 상태를 읽고, 눌린 경우 tone() 함수를 사용하여 해당 주파수의 소리를 재생
    • while(digitalRead(sw[k])); 구문을 사용하여 버튼이 눌린 동안 대기
    • 버튼에서 손을 떼면 noTone()을 호출하여 음을 멈춤

5. 결론

이 프로젝트를 통해 아두이노를 사용하여 간단한 피아노를 구현할 수 있습니다.

  • 원하는 음을 추가하거나, 더 많은 버튼을 사용하여 다양한 음계를 연주할 수도 있습니다.
  • RGB LED와 결합하여 연주하는 음에 따라 색을 변경하는 기능을 추가하면 더욱 재미있게 사용할 수 있습니다!
  • 추가적으로, 가변 저항을 이용해 음의 길이를 조절하는 기능을 넣어 피아노를 더욱 섬세하게 만들 수도 있습니다.

직접 만들어 보고 자신만의 멜로디를 연주해 보세요! 🎵

728x90
반응형