Robofun 機器人論壇

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

Arduino藍芽感測器訊號傳給手機

[複製鏈接]
1#
發表於 2018-2-16 07:34:03 來自手機 | 顯示全部樓層
找一下之前的討論串“請問DHT11如果要傳送到手機”
2#
發表於 2018-2-17 07:55:31 | 顯示全部樓層
1.因為送出的第0,3,6,9 個 byte
   分別就是 97, 98,99,100
   其中 ′b' 的 ascii code 就是 98, ′c′ 就是 99......
   寫法不同,但結果相同
    可以直接改成 98,99,100,比較直覺
2. 請先確定你的藍牙是否也接在 0 和 1接腳
3. 程式寫錯,那個 serial.write 的 for loop
    應該是 12, 不是 9
3#
發表於 2018-2-18 00:18:45 | 顯示全部樓層
本帖最後由 超新手 於 2018-2-18 00:48 編輯

1. 你根本沒用到 i2cbt. 那行是多餘的
     既然你可以收到資料,即使是錯的
     我猜接線應該就沒問題了吧?
2. break 也寫錯了,應該在迴圈外
這樣只會執行一次
應該是
case 97:
        for (int i = 0 ; i <12 ; i++) {
          Serial.write(Data[ i]);
        }
break;
4#
發表於 2018-2-18 18:09:03 | 顯示全部樓層
Arduino端
如果讀到 high,就傳 1,讀到 low. 就傳 0
手機端
直接判斷讀到的是 0 或 1,顯示不同文字即可
5#
發表於 2018-2-18 21:01:53 | 顯示全部樓層
要新增一個變數,
如果有偵測到人,就把這個變數設為1
如果這個變數是1,就不再偵測
沒偵測到人,再把這個變數設為0
6#
發表於 2018-2-19 10:27:05 | 顯示全部樓層
開關 led 一般都用 digitalwrite
如 digitalwrite(接腳, high);或
digitalwrite(接腳, low);
8#
發表於 2018-2-19 18:01:29 | 顯示全部樓層
你應該不是要用按鍵吧?要達成你說的功能,應該先在程式最上面宣告一個變數吧?
還是你最後決定要改用按鍵?
9#
發表於 2018-2-19 21:14:50 | 顯示全部樓層
上面有寫......
要新增一個變數,
如果有偵測到人,就把這個變數設為1
如果這個變數是1,就不再偵測
沒偵測到人,再把這個變數設為0
10#
發表於 2018-2-20 06:56:56 | 顯示全部樓層
本帖最後由 超新手 於 2018-2-20 06:58 編輯

紅色部分自己修改,可別照抄
unsigned char f=0;
void loop(){
.............
   if(f) {
     if(ir沒偵測到人){
         f=0;
         digitalwrite(led,low);
      }
   } else {
       if(ir偵測到人){
         f=1;
         digitalwrite(led,high);
      }
   }
}
11#
發表於 2018-2-20 10:57:20 來自手機 | 顯示全部樓層
因為你加了 delay(500). 這樣做,每0.5秒才會處理一次命令
12#
發表於 2018-2-20 11:12:51 來自手機 | 顯示全部樓層
你可不可以不要省略 if(digitalRead(button) == HIGH) 的括號?我有點搞不清楚你要做什麼了?感覺上 ir 和按鍵的邏輯會互相衝突
13#
發表於 2018-2-20 16:13:10 | 顯示全部樓層
上面已經回答了...
你加了delay(500),才會卡卡
黑屏應該是 serial.write(0) 和  serial.write(1) 造成的
這樣寫都是錯(不好)的
14#
發表於 2018-2-20 17:31:53 | 顯示全部樓層
寫在 data 那邊,要改的地方“至少“有三個
1.原來只需 12 個 bytes
現在宣告成 13 bytes
2.第12個 byte 的值是 0 或1,由 ir 決定
3. 本來要傳12bytes,改傳 13 bytrs
當然, app 也要一起修改
15#
發表於 2018-2-20 19:51:09 來自手機 | 顯示全部樓層
可以先把程式全部貼出來嗎?
16#
發表於 2018-2-20 20:44:38 | 顯示全部樓層
1.看不出那邊有問題,你的 button 怎麼接?
    你應該是直接用 arduino 上的led,
    而沒有另外再接 led 吧?
2. 最後幾行那個 button 的功能是?
    怎麼看都覺得很怪
    照理說,我猜你要做的功能應該是
    1) 如果button是關(High),不管有沒有人
      ,led都是關
    2)如果button是開(low),Led 會根據 ir 有沒有
        偵測到人,來決定led要不要開關才是
   
17#
發表於 2018-2-21 06:07:40 | 顯示全部樓層
>>if(digitalRead(button) == HIGH){
從程式來看, 你的 button 是 high 動作
一般來說,很少看到 high 動作的 button
因為這樣做,硬體接線會比較多一點
你的 button 是怎麼接到 arduino 的?
18#
發表於 2018-2-21 17:26:27 | 顯示全部樓層
本帖最後由 超新手 於 2018-2-21 19:21 編輯

接 5V 和 GND?
你這樣接. 一按下去不就短路了嗎?
我是不太清楚你是用那種按鍵

一般都一邊接地, 一邊接 MCU, 然後
pinMode(button,INPUT_PULLUP);
19#
發表於 2018-2-21 19:18:37 | 顯示全部樓層
1.INPUT_PULLUP
2. 你要先確認一下你的 button 是不是接錯
    感覺上你應該接錯了,
    按下去才會重置
20#
發表於 2018-2-21 19:38:53 | 顯示全部樓層
如果是這種按鈕, 那你應該真的接錯了
接腳我不確定,如果你有三用電錶,
按一下量一下就知道了
一邊接地,一邊接 mcu
程式部份
1. 改 input_pullup
2. ==high 改成 ==low
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-4 13:46 , Processed in 0.214343 second(s), 6 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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