Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
12
返回列表 發新帖
樓主: yao412030
打印 上一主題 下一主題

EZ1超音波連接運用在ARDUINO上大問題!

[複製鏈接]
21#
發表於 2011-9-20 20:58:10 | 只看該作者
本帖最後由 vegewell 於 2011-9-20 21:18 編輯

回復 20# yao412030

那你也蠻會的, 知道要降至3.3V,
請問你是哪裡怎麼降至3.3V的?

你的意思是說,現在可以正確的顯示,至少誤差不會太大?
除了顯示值差距太小, 就沒有問題了嗎?

The LV-MaxSonar®-EZ0™
detects objects from 0-inches to 254-inches
最長可偵測 是(6.45-meters),
那你想偵測的最遠為何?假設是100公分
假設0公分時類比值是10,  那100公分時假設類比值25,
所以你要在程式裡加入map()函數:
----------------------------------
ultrasoundValue = (echo / .58138);
ultrasoundValue = map(ultrasoundValue, 10, 25, 1000, 2500);
       Serial.println();
       Serial.print("UltraSound Value");
       Serial.print( ultraSoundSignalPins);
       Serial.print(  "= ");
       Serial.print(ultrasoundValue);
-------------------------------------
試看看 因為是long 不是int 所以不把握,
22#
 樓主| 發表於 2011-10-4 18:53:46 | 只看該作者
回復 21# vegewell
大大您好阿....小弟我這幾天實在是在搞專題初審太忙了
現在才搞玩,第一階段算是順利過了
很謝謝您
至於我為什麼會知道要用3.3V是因為我測試結果發現5V整個做動非常不正常....
加上我知道這個感測器有5V和3.3V的工作電壓
所以我就測試就測出來囉....
至於類比值問題,小弟我會參考您提供給我的訊息!!!
現在為止目前做動是正常,可是還是有點問題...
小弟我就先謝謝大大指導囉!
23#
發表於 2011-10-4 20:00:33 | 只看該作者
回復 22# yao412030

不客氣,
也謝謝你讓我有機會,更深入瞭解這個超音波元件.
我們一樣都是在網路上學習別人的知識
24#
 樓主| 發表於 2011-10-15 22:10:56 | 只看該作者
本帖最後由 yao412030 於 2011-10-15 22:12 編輯

大大您好
小弟我又遇到問題了.....
就是小弟我有寫說如果左右兩科都偵測到障礙物時,要判斷哪邊距離障礙物比較遠,轉向離障礙物較遠的方向時
我的超音波類比值整個會怪怪的
假如說我前方有到牆壁,左邊比較接近牆壁,正常來說左邊類比值一定會小於右邊,可是我的卻不是,我的居然是左邊大於右邊...
反之也是一樣....
數值整個變非常奇怪,我也檢查我的程式碼好像也沒啥問題在....
我只用大大您提供的電路給我兩顆雖然不會互相干擾,左右其中一顆偵測到也不會發現說有類比值不穩的地方,可是兩顆同時偵測到就會出現問題
可否請大大幫助我呢?
謝謝!!
小弟我提供一下當兩邊都有遇到障礙物判斷距離轉向的寫法!!
}else if(right && left <= 30 && right<left){ //偵測到左右方障礙物且左方距離障礙物較遠減速轉向左方
      analogWrite(g_nMotor_2_Pin_B,255);
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 120);
    l = 1;
  }else if (right >= 30 && right < left){ //偵測結束回復速度
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 180);
  }else if(right && left <= 30 && right>left){ //偵測到左右方障礙物且右方距離障礙物較遠減速轉向右方
      analogWrite(g_nMotor_2_Pin_A,255);
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 120);
  }else if (left >= 30 && right > left){ //偵測結束回復速度
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 180);
    r = 1;
25#
發表於 2011-10-16 13:37:37 | 只看該作者
本帖最後由 vegewell 於 2011-10-16 13:53 編輯

回復 24# yao412030


    你現在是移動轉向時,會有問題發生,
靜止時沒有問題,
是不是?
那麼是 MaxSonar-EZ1本身沒問題及與ARDUINO的連線沒問題,
對不對?
你只用一顆MaxSonar-EZ1面對兩個障礙物,移動轉向時會有問題發生嗎?
這個類比值是否符合兩個障礙物的距離?而不是有很多不同數值亂跳?

那麼可能就是設計上有問題,
先請問你的自走車有多寬?幾公分?
兩顆MaxSonar-EZ1相距幾公分?
兩顆MaxSonar-EZ1是平行的放置面對同一方向嗎?
26#
 樓主| 發表於 2011-10-16 14:21:42 | 只看該作者
回復 25# vegewell
大大我是整台車架空起來測量.....
這是示意圖

正常來說距離牆壁10公分的類比值一定會比20公分的小....
可是我的剛好相反,導致我的車會轉向10公分的那方....
可是我程式碼沒有寫錯....不知道是不是那邊出了問題
27#
發表於 2011-10-16 22:08:28 | 只看該作者
本帖最後由 vegewell 於 2011-10-16 22:10 編輯

回復 26# yao412030

你必須先確定是 MaxSonar-EZ1本身沒問題,
如果你沒驅使馬達轉動的時候,
兩顆MaxSonar-EZ1對著各種障礙物,包括你畫的圖這種角度對著牆壁,
兩顆MaxSonar-EZ1讀出的值是否正確?

如果正確,就表示 MaxSonar-EZ1本身沒問題,

至於你馬達的程式,因為我不曉得你是怎麼連線及控制馬達,
所以不曉得你的程式對不對,

如果你肯定正確的話,就表示最可能出現的問題是ARDUINO,
ARDUINO可能又控制馬達,造成電力不足,
所以有數值跳動的問題產生,
這種情形在ARDUINO控制servo時經常發生.
28#
發表於 2011-10-16 22:57:14 | 只看該作者
回復 24# yao412030


    另外一種可能就是因為斜面折射的關係,
所以比較遠的那一顆接受到近的那顆的訊號,  而且比較多,
所以,以後每次在車子轉動時你就反過來寫,
大概如下:
}else if(right && left <= 30 && right>left){ //偵測到左右方障礙物且左方距離障礙物較遠減速轉向左方
      analogWrite(g_nMotor_2_Pin_B,255);
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 120);
    l = 1;
  }else if (right >= 30 && right > left){ //偵測結束回復速度
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 180);
  }else if(right && left <= 30 && right<left){ //偵測到左右方障礙物且右方距離障礙物較遠減速轉向右方
      analogWrite(g_nMotor_2_Pin_A,255);
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 120);
  }else if (left >= 30 && right < left){ //偵測結束回復速度
      analogWrite( g_nMotor_1_Pin_A, 0);
      analogWrite( g_nMotor_1_Pin_B , 180);
    r = 1;
29#
 樓主| 發表於 2011-10-17 22:30:01 | 只看該作者
回復 28# vegewell
大大您好,小弟我測試之後發現不管是架起來還是放在地上跑假如兩顆同時偵測到那個類比值就會很奇怪....
我自己也不知道要如何解釋....因為她每次詭異的狀態都不一定....
我在想我是不是用錯電路了...應該要使用Simultaneous Operation才對...
我現在還在思考這個問題,小弟我先謝謝您的協助了ˊ!!
我很感激!!
30#
發表於 2011-10-18 17:50:09 | 只看該作者
回復 29# yao412030

不客氣,
也感謝你給我研究的動力,
試試 使用Simultaneous Operation的方式,也是應該的嘗試.
另外,如果你的自走車,
寬度不過十幾公分,
其實只用一顆MaxSonar-EZ1 也可以在碰到障礙物時,
知道要轉哪個方向,
如下舉例,給你參考:
http://megaswf.com/serve/1186867
31#
發表於 2012-3-6 17:10:03 | 只看該作者
一樣坐在電腦前面上網聊天,
做一樣的事情,我卻有額外的收入。
網路創業的宅經濟網路世代,
唯一的風險就是你沒有參與!!

想在家工作,創造持續性收入!!
請點入註冊免費體驗90天>> http://litailhsu.blogspot.com/

(註冊成功後,請每天務必查收信箱重要信息!!)
32#
發表於 2012-4-24 20:32:42 | 只看該作者
Serial.begin(9600);
   for(int i=0; i < 2; i++) {
       pinMode(ultraSoundSignalPins, INPUT); // Switch signalpin to input
   }
   pinMode(ultraSoundTriggerPin, OUTPUT); // set this pin to output
  //give the sensors time to boot up
   delay(250);
   // send RX pin high to signal to chain to ping
   digitalWrite(ultraSoundTriggerPin, HIGH);
   delayMicroseconds(30);
   digitalWrite(ultraSoundTriggerPin, LOW);
   pinMode(ultraSoundTriggerPin, INPUT); // electrically disconnects the pin
   delay(50);


可以請問這段的意思是什麼
有點看不懂
謝謝
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-4-28 00:21 , Processed in 0.242946 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表