日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

超声波传感器 URM04 V2.0 的使用

發(fā)布時(shí)間:2024/3/26 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超声波传感器 URM04 V2.0 的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近購買了DFrobot的超聲波傳感器URM04 V2.0, 采用Arduino + Xbee 傳感器擴(kuò)展板V5 + URM04 V2.0 的結(jié)構(gòu),可是程序就是調(diào)不好。從URM04上無法讀取數(shù)據(jù)。參考了Wiki?(這個(gè)Wiki上的東西不可信,2012-02-06注)?中的說明,依然不好使: 問題是無法從傳感器獲取數(shù)據(jù)。

經(jīng)過多次試驗(yàn),終于將程序調(diào)試出來。之前無法獲取數(shù)據(jù),是因?yàn)槲以诩ぐl(fā)測量后,用一個(gè)循環(huán)死等返回的數(shù)據(jù),但是(不知道是不是我手上的芯片的問題)有時(shí)后傳感器是不返回?cái)?shù)據(jù)的,因此不能死等。修改程序后,只等待一定的時(shí)間,如果超時(shí)后依然沒有數(shù)據(jù)返回,就放棄,而進(jìn)行下一次測量。

代碼如下:(代碼修改自淘寶賣家wxxmickey發(fā)給我的程序,特此向他表示感謝)

// Measure distance using the URM04V2 ultrasonic sensor. void measureDistance(byte device) {digitalWrite(EN, HIGH);// Trigger distance measurement.uint8_t DScmd[6]={0x55,0xaa,device,0x00,0x01,0x00}; for(int i=0; i<6; i++) {Serial.write(DScmd[i]);DScmd[5] += DScmd[i];}delay(30);// Send command to read measured distance.uint8_t STcmd[6]={0x55,0xaa,device,0x00,0x02,0x00}; for(int i=0; i<6; i++) {Serial.write(STcmd[i]);STcmd[5] += STcmd[i];} delay(3); }// Return last measured distance by the URM04V2 ultrasonic sensor. // -1 means the last measurement is out of range or unsuccessful. int readDistance() {uint8_t data[8];digitalWrite(EN,LOW);boolean done = false;int counter = 0;int result = -1;while(!done){int bytes = Serial.available();if(bytes==8) { for(int i=0; i<8; i++) {data[i] = Serial.read();}result = (int)data[5] * 256 + data[6];done = true;} else {delay(10);counter++;if(counter==5) { // If failed to read measured data for 5 times, give up and return -1.done = true;}}}return result; } // Usage code sample: int EN = 2; // Pin number to enable XBee expansion board V5void setup() {pinMode(EN, OUTPUT);Serial.begin(19200);delay(200);digitalWrite(EN,HIGH);delay(2000); ? }void loop() {measureDistance(0x11);int distance = readDistance();delay(1000); }


方法measureDistance用于激發(fā)測量,其參數(shù)device用于指定要激發(fā)的URM傳感器的ID,默認(rèn)傳感器ID為0x11,如果你只有一個(gè)傳感器,用0x11就是了。方法readDistance用于返回測量所得的距離值。如果測量失敗或是測量距離超出傳感器可測范圍,readDistance均返回-1。


注意事項(xiàng):

  • URM04 V2.0 的默認(rèn)設(shè)備ID是0x11。
  • URM04 V2.0 的波特率為固定值19200。
  • URM04 V2.0 初始化的時(shí)候,其上的LED燈會(huì)慢速閃爍4下。
  • URM04 V2.0 如果與主板有數(shù)據(jù)交流,其上的LED燈會(huì)一閃一閃的。
  • 由于URM04 V2.0 是通過 由于Xbee 傳感器擴(kuò)展板V5 上的RS485傳輸數(shù)據(jù),而RS485又占用了Arduino上的串行口Serial,因此在從電腦往Arduino下載程序的時(shí)候,要把Xbee 傳感器擴(kuò)展板V5從Arduino上拔出。
  • Xbee 傳感器擴(kuò)展板V5上的跳線(三個(gè)跳線都要這么做)要撥到標(biāo)有485的那一端。
  • 如果想用兩頭都有接口的4P線把URM04和Xbee 傳感器擴(kuò)展板V5連接起來,需要把4P線的一段剪斷,然后接入RS485插頭中。

所使用的設(shè)備圖片: URM04 V2.0

Xbee 傳感器擴(kuò)展板V5


4P線


總結(jié)

以上是生活随笔為你收集整理的超声波传感器 URM04 V2.0 的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。