아두이노
아두이노를 이용한 간단한 피아노 만들기 🎹
모빌리티키즈
2025. 5. 13. 11:13
728x90
반응형
아두이노와 피에조 버저를 활용하여 간단한 피아노를 만들 수 있습니다. 이번 프로젝트에서는 버튼을 눌러 각 음계를 연주할 수 있도록 구현해 보겠습니다. 누구나 쉽게 따라 할 수 있으며, 코드와 회로도 설명을 통해 이해를 돕겠습니다.
1. 준비물
먼저 필요한 부품을 준비하세요.
필요한 부품:
- 아두이노 (Uno, Mega 등)
- 피에조 버저
- 푸시 버튼 7개
- 점퍼 와이어
- 브레드보드
2. 회로 구성
버튼을 사용하여 원하는 음을 출력하도록 회로를 구성합니다.
회로 연결 방법
- 피에조 버저 연결:
- (+) 단자를 아두이노의 디지털 12번 핀에 연결
- (-) 단자를 GND(접지)와 연결
- 버튼 연결:
- 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
반응형