2016年1月4日 星期一

期末第17組 作品 倒車雷達變樂器

用聲波感測器,距離遠近和頻率
#include <Ultrasonic.h> // 使用超音波的程式庫
#define TRIGGER_PIN 12 // 定義模組triger端為數位接腳12
#define ECHO_PIN 11 // 定義模組echo端為數位接腳11
int spk=13; // 定義揚聲器為數位接腳13
Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN); //設定HC-SR04初始化參數
void setup()
{
Serial.begin(9600);
pinMode(spk, OUTPUT);
}


void loop()
{
float cmMsec; // 定義浮動數
long microsec = ultrasonic.timing(); //  測距,返回的是一個時間單位(microsec)


cmMsec = ultrasonic.convert(microsec,Ultrasonic::CM); //將測得的時間單位計算為距離單位
Serial.print(" CM: ");
Serial.println(cmMsec);



if( cmMsec >= 20 && cmMsec <= 29){
//for(int i = 0; i < 120; i++)
digitalWrite(spk, 1);
digitalWrite(spk, 0);
tone(13,1048);
Serial.write(1);



}
else if (cmMsec >= 30 && cmMsec <= 49){
//for(int i = 0; i < 120; i++)
digitalWrite(spk, 1);
digitalWrite(spk, 0);
tone(13,1176);
Serial.write(2);



}
else if (cmMsec >= 50 && cmMsec <= 69){
//for(int i = 0; i < 120; i++)
digitalWrite(spk, 1);
digitalWrite(spk, 0);
tone(13,1320);
Serial.write(3);

}
else if (cmMsec >= 70 && cmMsec <= 89){
//for(int i = 0; i < 120; i++)
digitalWrite(spk, 1);
digitalWrite(spk, 0);
tone(13,1396);
Serial.write(4);

}
else if (cmMsec >= 90 && cmMsec <= 109){
//for(int i = 0; i < 60; i++)
digitalWrite(spk, 1);
digitalWrite(spk, 0);
tone(13,1568);
Serial.write(5);



}
else if (cmMsec >109){


digitalWrite(spk, 1);
//digitalWrite(spk, 0);
tone(13,1760);
Serial.write(6);


}
else
{
//digitalWrite(spk, 0);


}
}

沒有留言:

張貼留言