2020年2月20日 星期四

Arduino學習2002.超音波4針模塊

Arduino學習2002.超音波4針模塊

課程時超音波模塊經常用在小車上,
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,


奇怪..為什麼學不完@_@"