課程時超音波模塊經常用在小車上,
4針腳除了正負輸入電力外,
T和H為發射和接收腳位,
此模塊可測距離2~400cm
如何取得超音波模塊的數據來控制判斷式,
作一個簡單的程式,
第一段把模塊得到的數據計算為公分記於SR04,
設變數HH為模塊得到的SR04數值,
當HH達到所設定的10公分距離時,
則內建D13燈亮3秒後熄
int SR04(int T,int E) //模塊T,E接單片機D2,D3
{
int D;
pinMode(T,OUTPUT);
pinMode(E,INPUT);
digitalWrite(T, 0);
delayMicroseconds(2);
digitalWrite(T, 1);
delayMicroseconds(20);
digitalWrite(T,0);
D = pulseIn(E, 1);
D = D / 58;
return D;
}
int HH=0;
void setup()
{
digitalWrite(2,0);
pinMode(13,OUTPUT);
}
void loop()
{
HH=SR04(2,3);
if(( (HH)<(10) ))
{
digitalWrite(13,1);
delay(3000);
digitalWrite(13,0);
}
}
自行修改運用在小車靠近物體時,
則馬達停止或減速等等控制,
或是歡迎光臨迎賓鈴警報器上,
註~
第一段程式中的D值為什麼要除58?
音速在0度C+海拔高度0時的速度為331.5公尺/秒,
一萬公尺高空之音速約為295公尺/秒,
溫度每升高1度C增速0.607公尺/秒,
台灣年平均溫度約22度,略高度不計帶入公式~
音速=331.5+0.607*溫度C,單為公尺/秒,
則22度C環境為331.5+0.607*22=344.854m/s
將每秒344.854公尺,反算成每公尺0.002899秒,
再轉換單位為每公分28.99微秒,(100/1000000)
當模塊發出聲波,再到回收,因此28.99*2=57.99
所以要將得到的微秒數/58,則得到公分值,
若看國外的程式,多是/59可能因地區平均溫度不同,
全球平均每小時1224公里,每秒340公尺,
若以340計算則/58.82,
奇怪..為什麼學不完@_@"
沒有留言:
張貼留言