본문 바로가기
아두이노

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

by 모빌리티키즈 2025. 5. 20.
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
반응형