아두이노

초음파 센서를 이용한 음계 변환 회로 설계

모빌리티키즈 2025. 5. 20. 09:44
728x90
반응형

개요 초음파 센서와 피에조 스피커를 이용하여 거리에 따라 다른 음계를 출력하는 시스템을 설계합니다. 초음파 센서는 사물과의 거리를 측정하고, 그 값을 이용하여 피에조 스피커에서 특정 주파수의 음을 생성하도록 합니다.

회로 설명

사용된 부품 및 핀 번호

  1. 초음파 센서(HC-SR04)
    • pinECHO = 7 → 초음파 센서의 Echo 핀(수신)
    • pinTRIG = 8 → 초음파 센서의 Trigger 핀(발신)
  2. 피에조 스피커
    • 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())

  1. 초음파 센서가 사물과의 거리를 측정하기 위해 digitalWrite(pinTRIG, HIGH);를 10마이크로초 동안 유지
  2. pulseIn(pinECHO, HIGH);를 통해 초음파가 반사되어 돌아오는 시간을 측정
  3. 측정된 값을 distance/58을 통해 센티미터 단위의 거리(val1)로 변환
  4. 거리 값을 음계 주파수(val2)로 변환하여 tone(piezo, val2, 200);를 사용해 피에조 스피커에서 소리를 출력
  5. 시리얼 모니터에 거리와 해당 주파수를 출력하여 확인

작동 원리

이 회로는 초음파 센서를 통해 거리 값을 얻고, 해당 값에 따라 다른 주파수의 음을 출력합니다. 가까운 거리일수록 높은 주파수가 출력되고, 먼 거리일수록 낮은 주파수가 출력됩니다.

이 방식은 간단한 거리-음 변환 시스템으로 활용될 수 있으며, 음악적인 효과를 가미할 수도 있습니다. 예를 들어, 특정 거리 범위를 음계의 특정 노트에 대응시켜서 연주할 수도 있습니다.

이제 이 회로를 활용하여 직접 실험해보는 것도 재미있겠네요! 필요하면 더 발전시킬 수 있는 아이디어를 함께 고민해볼까요? 🎶

초음파 사용.zip
0.00MB

728x90
반응형