圧電スピーカーと超音波測域センサを使って近くになるにつれ音が高くなる、といった距離によって音域が変わる装置を作りました。その発展として、距離によってメロディが変わるプログラムを書きたいのですが、どこをどういじればいいのか簡単で良いので教えていただけるとうれしいです。
int Duration;
float Distance;
const int TRIG = 10;
const int ECHO = 12;
const int BEAT = 300;
const int SPK = 2;
void setup(){
Serial.begin(9600);
pinMode(TRIG,OUTPUT);
pinMode(ECHO,INPUT);
}
void loop(){
digitalWrite(TRIG,LOW);
delayMicroseconds(10);
digitalWrite(TRIG,HIGH);
delayMicroseconds(10);
digitalWrite(TRIG,LOW);
Duration=pulseIn(ECHO,HIGH);
if(Duration>0){
Distance=Duration/2;
Distance=Distance*0.034;
Serial.print(Distance);
Serial.print("cm");
}
if(Distance<4){
tone(SPK,523,BEAT);
Serial.println("[C]");
}
else if(Distance>=4&&Distance<7){
tone(SPK,494,BEAT);
Serial.println("[B]");
}
else if(Distance>=7&&Distance<10){
tone(SPK,440,BEAT);
Serial.println("[A]");
}
else if(Distance>=10&&Distance<13){
tone(SPK,392,BEAT);
Serial.println("[G]");
}
else if(Distance>=13&&Distance<16){
tone(SPK,349,BEAT);
Serial.println("[F]");
}
else if(Distance>=16&&Distance<19){
tone(SPK,330,BEAT);
Serial.println("[E]");
}
else if(Distance>=22&&Distance<25){
tone(SPK,294,BEAT);
Serial.println("[D]");
}
else if(Distance>=25){
tone(SPK,262,BEAT);
Serial.println("[c]");
}
delay(500);
}