日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/3/26 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超声波传感器 URM04 V2.0 的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

經過多次試驗,終于將程序調試出來。之前無法獲取數據,是因為我在激發測量后,用一個循環死等返回的數據,但是(不知道是不是我手上的芯片的問題)有時后傳感器是不返回數據的,因此不能死等。修改程序后,只等待一定的時間,如果超時后依然沒有數據返回,就放棄,而進行下一次測量。

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

// 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用于激發測量,其參數device用于指定要激發的URM傳感器的ID,默認傳感器ID為0x11,如果你只有一個傳感器,用0x11就是了。方法readDistance用于返回測量所得的距離值。如果測量失敗或是測量距離超出傳感器可測范圍,readDistance均返回-1。


注意事項:

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

所使用的設備圖片: URM04 V2.0

Xbee 傳感器擴展板V5


4P線


總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。