728x90
반응형
개요 초음파 센서와 피에조 스피커를 이용하여 거리에 따라 다른 음계를 출력하는 시스템을 설계합니다. 초음파 센서는 사물과의 거리를 측정하고, 그 값을 이용하여 피에조 스피커에서 특정 주파수의 음을 생성하도록 합니다.
회로 설명
사용된 부품 및 핀 번호
- 초음파 센서(HC-SR04)
- pinECHO = 7 → 초음파 센서의 Echo 핀(수신)
- pinTRIG = 8 → 초음파 센서의 Trigger 핀(발신)
- 피에조 스피커
- piezo = 5 → 피에조 스피커를 연결하여 음을 출력하는 핀
소스 코드 설명
초기 설정(setup())
- Serial.begin(9600); → 시리얼 모니터에 거리를 출력하기 위한 설정
- pinMode(pinECHO, INPUT); → 초음파 센서의 Echo 핀을 입력으로 설정
- pinMode(pinTRIG, OUTPUT); → 초음파 센서의 Trigger 핀을 출력으로 설정
- pinMode(piezo, OUTPUT); → 피에조 스피커를 출력으로 설정
int pinECHO=7;
int pinTRIG=8;
int piezo=5;
int distance;
void setup() {
Serial.begin(9600);
Serial.print("Distance:");
pinMode(pinECHO, INPUT);
pinMode(pinTRIG, OUTPUT);
pinMode(piezo, OUTPUT);
}
void loop() {
digitalWrite(pinTRIG, LOW);
delayMicroseconds(2);
digitalWrite(pinTRIG, HIGH);
delayMicroseconds(10);
digitalWrite(pinTRIG, LOW);
distance=pulseIn(pinECHO, HIGH);
int val1=distance/58;
int val2=val1*50;
tone(piezo, val2, 200);
delay(200);
Serial.print("Distance:");
Serial.print(val1);
Serial.println("cm, ");
Serial.print(val2);
Serial.print("Hz");
}
거리 측정 및 음계 변환(loop())
- 초음파 센서가 사물과의 거리를 측정하기 위해 digitalWrite(pinTRIG, HIGH);를 10마이크로초 동안 유지
- pulseIn(pinECHO, HIGH);를 통해 초음파가 반사되어 돌아오는 시간을 측정
- 측정된 값을 distance/58을 통해 센티미터 단위의 거리(val1)로 변환
- 거리 값을 음계 주파수(val2)로 변환하여 tone(piezo, val2, 200);를 사용해 피에조 스피커에서 소리를 출력
- 시리얼 모니터에 거리와 해당 주파수를 출력하여 확인
작동 원리
이 회로는 초음파 센서를 통해 거리 값을 얻고, 해당 값에 따라 다른 주파수의 음을 출력합니다. 가까운 거리일수록 높은 주파수가 출력되고, 먼 거리일수록 낮은 주파수가 출력됩니다.
이 방식은 간단한 거리-음 변환 시스템으로 활용될 수 있으며, 음악적인 효과를 가미할 수도 있습니다. 예를 들어, 특정 거리 범위를 음계의 특정 노트에 대응시켜서 연주할 수도 있습니다.
이제 이 회로를 활용하여 직접 실험해보는 것도 재미있겠네요! 필요하면 더 발전시킬 수 있는 아이디어를 함께 고민해볼까요? 🎶
728x90
반응형
'아두이노' 카테고리의 다른 글
DIY 초음파 거리 측정 및 객체 탐지 시스템 (0) | 2025.05.20 |
---|---|
Arduino 기반 스네이크 게임 프로젝트 (2) | 2025.05.20 |
🎹 아두이노로 1옥타브 피아노 만들기! (0) | 2025.05.17 |
🚀 Arduino I2C LCD를 활용한 자동 이동 캐릭터 (0) | 2025.05.15 |
🚀 Arduino LCD에서 커스텀 문자 출력하기 (0) | 2025.05.15 |