Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2946|回復: 14
打印 上一主題 下一主題

有關於遙控車跟超音波的合併

[複製鏈接]
1#
發表於 2017-10-11 20:28:47 來自手機 | 顯示全部樓層
本帖最後由 超新手 於 2017-10-12 08:19 編輯

1.serial 沒有完全拿掉
2.bt.available沒有整合在一起
應該把 case 97: 整合進去
3.雖然結果相同
但是最好的做法是
把 bt 的部份都改成 serial
也就是拿掉// SoftwareSerial BT(RX, TX);
然後把所有的 BT 改成 Serial
用硬體 uart 取代軟體 uart, 速度較快
當初沒注意到這一點
2#
發表於 2017-10-16 17:22:58 | 顯示全部樓層
本帖最後由 超新手 於 2017-10-16 17:24 編輯

1. Serial 要拿掉的是DEBUG 部份, 像(應該有五個吧?)
這些程式都是給人看的, 它會干擾APP讀值
Serial.println("Stop!");
Serial.println("Turn Left!");
Serial.println("Backward!");
.....
2. 加到 case 中

val = Serial.read();
    switch(val)
    {

      case 'a':   
      for(int i = 0; i < 3; i++)
        Serial.write(packet); //send packet to phone
        break;


    }
               

其中的 97 , 就是 'a', 也就是 0x61

3. 那個 case 'q' 你沒寫程式,
3#
發表於 2017-10-16 20:01:32 | 顯示全部樓層
本帖最後由 超新手 於 2017-10-17 12:50 編輯

1. 必須指定藍芽鮑率
所以 Serial.begin(9600); 不能拿掉
2. 97 是數字, 是 a 的 ASCII CODE(十進位)
所以,不能加引號,字元才要加
case 97:
等於
case 0x61:
等於
case 'a':
三種寫法是相同的, 它是數字, 不會變色也是正常的
但你要改成 'a' 而不是 'q'
不然 APP 那端也要一起改

3. 應該是
  for(int i = 0; i < 3; i++)
        Serial.write(packet[ i]);
不是我寫錯,而是這個論壇的 bug
看看你自己貼的這幾行就知道了
貼出的程式會被論壇改掉
4#
發表於 2017-10-17 18:04:32 | 顯示全部樓層
本帖最後由 超新手 於 2017-10-17 18:26 編輯

延遲可能是因為
1. APP 端 clock1 的速度太快
時間可以調長一點,
   
2. 你加了 delay(1000);
    所以你按再快, sonar 和 motor 也是一秒處理一次
    這個值可以縮短些

3. pulseIn(pin, value)
沒設timeout 時間, 所以一旦沒收到超音波
它"有機會"會卡住一秒鐘的時間

4. 可以把
if(Serial.available()>0)
  {
改成
while(Serial.available()>0)
  {
讓它一次就把資料處理完, 不會卡一大堆資料,
一秒(或很久)才處理一次


可能要自己改看看才知道為什麼
5#
發表於 2017-10-18 08:28:47 | 顯示全部樓層
寫在同一個即可, 也比較單純
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-5 08:09 , Processed in 0.048123 second(s), 6 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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