本篇將教導大家如何使用手機讀取Arduino上類比腳位的數值,在此我們接上的是旋鈕式可變電阻。實際上可連接的元件不只可變電阻,所有的類比式感測器例如光敏電阻、熱敏電阻等都可以這樣使用!
雙A計畫文章總覽:
作者/攝影 | 偉和 |
難度 |
★★★☆☆ |
材料表 |
|
下載 | 範例程式請點我下載(App Inventor中文學習網檔案庫) App Inventor 2檔名:ReceiveDatafromArduino.aia |
範例影片如下:
先由下圖將藍牙及可變電阻接上Arduino (藍牙RX – Arduino D11, 藍牙TX – Arduino D10腳位)
App Inventor 編寫藍牙訊息接收程式
畫面元件很簡單,點選 BT List 之後,會顯示藍牙配對裝置清單,點選您已經配對好的藍牙裝置之後,Arduino的類比腳位資訊就會顯示在畫面中央的 TextBox 上。
這邊要注意的地方是要將Clock1的TimerInterval更改成10,也就是每 0.01秒更新一次。這麼一來才比較不會發生漏抓Arduino 發出來的訊息
程式說明:
本段程式重點在於手機在讀取Arduino訊號時,並不是直接向Arduino取得資料,而是採用間接的手法。先讓手機丟出一個訊號(本範例為發送49)。Arduino在等待接收到此訊號後,才會將感應器的數值以封包的形式傳送給手機。在第二個if後就是手機解讀Arduino所傳送過來的封包,並顯示到手機上。
請注意在程式初始化時我們把 Timer 關掉了,不然還沒有藍牙連線成功之前就發送藍牙訊息的話,會一直顯示錯誤畫面。
text 文字變數是用來接收 Arduino 送來的標頭,如果是’a’ 就代表這是一串封包的第一個,可以開始讀取了。
在 Clock.Timer事件中,會先送出一個49的數字作為確認碼,Arduino 接收到這筆資料之後就知道要開始傳送資料了。由於 Arduino A0 腳位的數值範圍是 0~ 1023,但是封包卻是以 8 bit (一位元組)為單位,因此要把數值以 8位元為單位來組合,並存入 number 變數中,就能順利將數字還原了。最後將 number 變數值顯示於 TextBox 中。
在斷線時,關閉計時器與藍牙連線,並讓畫面恢復到初始狀態
Arduino 程式碼
https://drive.google.com/file/d/0B5JxaMPW4OYpTWw3X0lXZEVTSDQ/edit?usp=sharing
請問圖中框起來的部分 是要怎麼拉出來 謝謝
http://blog.cavedu.com/wp-content/uploads/2014/01/31.png
您好 圖塊Lbl_getbtvalue.text是從手機介面Label重新命名取得的,上面有網址可看見詳細的命名
請問顯示數值的框框到底是用Label還是Text啊?
本範例是用 Textbox, 但您要改用 label 當然也是可以的
請問手機端藍芽可以在程式開始自動去連結它嗎?不需選取而自動去抓,請問程式要怎麼改呢?
您好,請在 Screen1.Initialize事件中使用 BluetoothClient.Connect (藍牙位址)就可以了。藍牙位址 00:16:53:xx:xx:xx
這樣就會在程式一啟動就會去對指定藍牙裝置連線。
可以請問要打藍芽位址要用哪個方塊元件打嗎?剛開始學打擾不好意思~
您好,BluetoothClient.connect 直接用文字常數指定您的藍芽位址就好了
請問要如何改才能直接向Arduino取得資料呢?
您好,part3 中就是您要的。只要確定 Arduino 要傳輸的是怎樣的資料(例如類比或數位感測器值)就能透過藍牙丟出去給接收端(PC / 手機皆可)
請問手機連上後,如何接收到數值(因為連接成功卻無顯示),能否給我圖片呢?
您好, 請問您有下載範例了嗎? 會直接顯示在 Lbl_getbtvalue 這個 label元件上(位於畫面中央).
請問能否運用’序列部監控視窗’發送數位訊號,經由藍牙給手機數位訊號呢??須從哪邊作更正?
請參考http://www.appinventor.tw/ai2_variables
您好, 如同上面所說唷. 不過發送數位訊號的意思是? 一般丟給 Serial Monitor的資料都是字元或數值. 或是用 putty 小程式從電腦端傳給手機也可以.
請參考 http://www.instructables.com/id/how-to-Control-arduino-by-bluetooth-from-PC-pock/
請問 第一版的def 宣告部分
在第二版需要改為甚麼??
您好, 請參考http://www.appinventor.tw/ai2_variables
請問如果要經由”序列埠視窗”傳送訊息,須如何做更改才能把訊息傳到手機中呢??
請問您的”序列埠視窗”是指 Arduino 的 Serial Monitor嗎? 是說要從 Serial Monitor 輸入資料之後讓 Arduino 透過藍牙送給手機嗎?
如果是這樣的話, 就是用 Serial.read 來讀取資料之後, 再透過另一個 Serial (通常是命名為 Serial1) 的 write指令走藍牙把資料送出
請問你們可以再試一次範例嗎
因為我下載範例
label的位子出現 0
您好, 我們這邊測試正常唷, 0代表沒有收到資料, 請檢查 Arduino 程式有沒有執行好嗎?
使用過後,判別會有錯誤
Sketch uses 6,418 bytes (19%) of program storage space. Maximum is 32,256 bytes.
Global variables use 504 bytes (24%) of dynamic memory, leaving 1,544 bytes for local variables. Maximum is 2,048 bytes.
avrdude: stk500_getsync(): not in sync: resp=0x00 不懂他的意思 請幫忙解答。
您好,會出現”avrdude: stk500_getsync(): not in sync: resp=0×00″這串資訊,是代表 serial port 被占掉了。請將藍牙發射器拔掉之後再傳程式,這樣應該就沒問題了。
請問手機若沒事先將藍牙功能打開,APPINVENTOR是否有辦法偵測到手機的藍牙沒開,並詢問使用者是否要開啟藍芽功能呢?若選擇”是”則自動開啟手機的藍牙功能,謝謝啦!!
您好, 可以偵測但無法從 App Inventor 程式中去打開藍牙. 因為 App Inventor 無法碰到 Android的系統服務. 您要用到的是 BluetoothClient元件的 Available 參數.
http://ai2.appinventor.mit.edu/reference/components/connectivity.html#BluetoothClient
謝謝你,了解!!也想順便跟你請教一下,APPINVENTOR2中,是不是無法偵測到按鈕元件的KEYDOWN及KEYUP,只有CLICK可以用呢?感恩!!
是的, Button雖然有 gotfocus 與 lostfocus事件, 但我測試沒什麼效, 但是 longclick(長按)事件是可以用的. 如果您有測出來, 請隨時與我們分享好嗎?
很感謝上一個問題的解答。
現在連接藍芽後,APP中Label並未有資訊顯示,不知道問題出在哪裡?!可否詳解
還有不事先啟動藍芽裝置,能否自動開啟以及配對?
看過你回復的內容,但也不明白更改的確切位置在哪?
謝謝你的幫忙!!
您好, 如上個問題的回答. 我們的程式都是ok的, 剛剛又測過一次…
無法自動開啟藍牙也無法自動配對, 藍牙配對一定要手動(因為要輸入配對碼). 但是自動連線是可以的, 寫在 Screen.Initialize 事件中就可以了. 但不建議這麼做, 因為有可能在任一項硬體尚未ok之前就連線的話, 這樣很容易 error. 請參閱 BluetoothClient元件說明.
好的,我再試試看!有消息立馬跟大家分享!!
感謝您~
你好
請問我要如何在兩個頁面持續連接同一藍芽
例如 我已經在頁面一連好藍芽點選頁面二的時候
藍芽不用重新連線 可以直接繼續執行動作呢?
請問您是在換頁之後發生藍牙斷線嗎?如果是這樣的話,要不要把所有功能整合到同一頁面中呢?
不好意思……如果我們需要切換頁面時藍芽扔然保持連線?求解
您好,這件事我們測試過好像無解喔… 就保持在同一個頁面吧~
請問要如何開啟手機程式之後要自動開啟藍芽呢?程式如何改呢?
把 bluetoothClient.connect 指令放在 Screen.Initialize 事件中就可以了. 但不建議這麼做, 因為有可能在任一項硬體尚未ok之前就連線的話, 這樣很容易 error.
很感謝上一個問題的解答。
但是我還有另一個問題,就是連接藍芽後,APP中Label並未有資訊顯示,不知道問題出在哪裡?!可否詳解,謝謝!!
請問您 Arduino 端的程式有執行嗎?如果確認有安裝的話,請按 Arduino 上的 reset鍵看看?有可能是連是連了,但Arduino上的程式不對或是根本沒有執行
請問如果不接感應器,而是直接讓arduino透過藍芽傳回我們一個既定的值,這樣可以嗎??
當然可以,直接把您要的值放在 I2CBT.write(); 中即可。
請問沒有可變電阻可以讓A0類比訊號顯示在手機上嗎??
您好,接上可變電阻的用意是可看到數值變化(實際上就是類比腳位上的電壓)。不接東西也一樣會有 500 多的數值在微幅跳動。A0~A5都是一樣的喔
感謝上次的回答,我還有一個疑問,那不接可變電阻的話,A0有要接什麼線到哪裡之類的嗎??
還是什麼都不用接呢??
您好,什麼都不用接就會有數值(代表該類比腳位上的電壓高低),可能會有微幅跳動,但大致上是不會動的。接上可變電阻是讓我們能清楚看到其電壓變化狀況。
你好,請問有沒有方法把textbox所輸入的文字傳回arduino作一個變數?
有的, Arduino 會把這個文字(實際上是字元 char) 以 ASCII code 格式來讀取. 概念和雙A計畫 Part1 是一樣的.
請問一下,如果我有四個開關分別 插入 A0~ A3 Arduino的 (ANALOG IN)然後要給android 訊號像是 0000~ 0001 二進制的話 Inventor要怎麼修改呢?
您好, 開關是數位裝置, 不能接在類比輸入. 您可以將其開關狀況組合成一個 byte。例如開開開關 = 1110, 關關開開 = 0011. 再把這個 byte 送出就可以了. 這樣一個 byte 就能表達八個開關的狀態.
請問我如果要把可變換成其他感測器但只有兩隻接腳要怎麼接
您好, 以光敏電阻來說的話(它沒有極性所以不會接反), 一邊接地, 一端接到A0 (或任何類比輸入腳位). 它本身受光照射時就會改變自身的電阻值, 這時就能使用 analogRead() 來讀取了.
您好, 拿可變電阻來說的話, 由於它沒有極性, 所以一端接 GND, 一端接到A0 或任一個類比腳位.
光照狀況改變時, 它本身的電阻值就會變動(變化效果視元件規格與品質而定), 其他的類比元件也是相同的概念. 這時就能用 analogRead(A0) 來讀取了.
請問一下,如果Arduino傳的只是數字,例如: 1、100、120.2145 這樣的數字,可以不使用封包的傳送方式直接傳送給手機嗎?
還是一定要用封包形式?如果是一定要的話,可以解釋一下所謂的解封包的原理嗎? 感恩!!!!
您好, 數字是封包的內容, 封包則是一種通訊的格式, 好像火車一樣, 他會告訴對方火車的第幾節車廂裝什麼, 就可以按照指定車廂去取得內容(就是所要傳送的字串、數字等). 所以您提的問題不太對.
詳細封包的原理, 請善用 Google (http://en.wikipedia.org/wiki/Network_packet)
如果我要做換頁,第一頁的方塊,要怎麼跟第二頁做相連
您好, 不同screen的程式碼無法相連. 因為一個個Screen的程式碼都是獨立的. 但是傳值是可以的, 請到Control 指令區找到 open another screen with start value 指令, 就能傳值給另一個screen. 但請注意切換screen 功能無法使用模擬器, 一定要用實體手機.
您好,如果我換成4個按鈕呢? 要怎麼個接法? 那我程式也需要打多執行緒嗎? 還是用while loop? ((到手機上面會顯示 0001 ~ 0010 之類的
您好, 不用多執行緒(Arduino 我記得沒辦法真的做到多執行緒). Arduino 的 loop() 本身就是無窮迴圈, 所以不用再加 while了. 4個按鈕接在數位腳位, 您可以將其開關狀況組合成一個 byte。例如開開開關 = 1110, 關關開開 = 0011. 再把這個 byte 送出就可以了. 這樣一個 byte 就能表達八個開關的狀態.
想問 我把可變算成按鈕 我是從arduino送出資訊給手機,當我按鈕按下去 我手機要怎麼接受到arduino資訊 arduino那邊是8位元的封包
如其他回覆, 我們會補按鈕的範例上來
請問手機可以兩隻同時連結藍芽並控制arduino嗎?
您好, Android手機可以同時連兩台以上的 Arduino, 但同一片 Arduino 同一時間只能被一台外部裝置來藍牙連線. 因為 Arduino 在通訊上都當成 slave端. (就算Arduino上裝了兩片藍牙, 這樣在應用上也很奇怪).
所以是最後面那邊設迴圈
是滴
App Inventor 後面要處理封包 想請問我是4個按鈕 要怎處理
如上述回覆
你好 我想請問一下AFTER PICKING 與 BEFORE PICKING在哪裡?
我在 BUTTON裡面 找不到這兩個功能 只有 CLICK….之類的!
您好, 那是 ListPicker 啦, 外觀看起來和 Button 一模一樣就是了.
哈哈 抱歉 一時看錯 謝謝
okok
如果不用封包 要做迴圈 傳送資料到TextBox 要怎做
不懂您的意思, 封包是傳送資料的格式, 迴圈是定期送出資料的方法. 兩者無關喔. 傳送到Textbox 的話, 就是去更新 TextBox.Text就可以了.
請問一下! 我都照上面的輸入 但是我手機接收端 卻出現 (Error 515:Not connected to a Bluetooth device) 請問是哪邊出了問題呢!?
Android 手機要和藍牙發射器先配對, 預設配對密碼是1234, 請問有做嗎? 有在 ListPicker 中看到這個裝置(HC-05)嗎?
請問一下 我的藍芽型號是(HC-05) 那程式碼的部分會一樣嗎?
還是哪裡要改的部分?
都一樣~
你好:我手機端也有 (Error 515:Not connected to a Bluetooth device)的情況發生,但是數值可以正確收到,但是錯誤訊息一直卡在那!!!
您好, 如果可以正確收到數值就ok了, 有時候我們連樂高NXT機器人也有相同的狀況. 就先別理它吧. 因為 App Inventor 能做的藍牙設定並不多.
我是手機程式碼部分都是照您上面打的,但是手機一進去就出現(Error 515:Not connected to a Bluetooth device) 當我關掉成程式時有時還會出現在上面。
而我是有接收到(HC-05) 但 不知為何會變這樣…
您好, 請先確認是否有配對完成. 就是按下 ListPicker之後要能看到 HC-05 才對.
並由 [這裡]下載我們所提供的範例程式碼. 再試試看吧
請問我在撰寫程式那找不到When BTList .BeforePicking的那個拼圖是甚麼原因,我是新手不好意思
BTList 是一個 ListPicker,我們改一下名字而已~
請問…如果想在同一個手機版面裏定時以0.01秒更新感應器的讀數, 第二個封包要如何修改?…試了很多次都不成功
阿…有點筆誤,應該是…
請問…如果想在同一個手機版面裏定時以0.01秒更新多過一個感應器的讀數, 第二個封包要如何修改?…試了很多次都不成功
謝謝
您好 若想要讀取多顆感應器的話 要更改二個部分 在Arduino 中要在新增2*感應器數量的封包 封包的組成可參考範例 另一部分是AppInventor 因為封包數量增加了 所以解封包的次數也相對要增加
你好,我想請問一下 如果arduino部分使用(/256,%256) DATE傳輸給手機,那AppInventor 該如何拆解兩個封包,將他們各自顯示在 TEXTBOX上呢?
程式中有寫喔, 就是這張圖. http://blog.cavedu.com/wp-content/uploads/2014/01/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7-2014-04-02-%E4%B8%8B%E5%8D%8811.36.20-1024×559.png
或是請參考我們的教學投影片 http://www.slideshare.net/NissinAllelujahnissin/4-44394140
您好, 已經在上一個問題回答囉
你好,請問,在最裡面的if為什麼 get global text 會有 < 0 的情況?? 為什麼要加上256??
您好,在電腦端,一個位元組的資料是0~255,但是當資料傳送到Arduino時,它卻會將128~255的資料誤判為-128~-1,所以為了要看原本的數值才會加上256
你好 請問 我已經下載範例使用 而在電腦ARDUINO上測試 有數值跑出 但使用手機卻沒有數值跑出來(已連線HC-05) 請問這該如何處理! 謝謝
您好 請問您手機有正確對您的藍牙晶片練線嗎? 若有再確認藍牙的Tx、Rx腳位是否連接正確
想問 設顏色的數字0 是白色嗎
您好, 請參考 [隨機改變顏色]這篇教學. 255,255,255 才是白色.
請問我在第一個頁面寫好藍芽也連好切換至第二個頁面藍芽沒斷東西都不能傳出,寫在同一頁就能傳出。是換夜不能傳嗎?還是要寫特殊的東西?
您好, App Inventor 會在換頁時斷開藍牙連線.
請問Screen1.Initialize事件中換頁使用 BluetoothClient.Connect (藍牙位址)開啟自動連線,測式個10次只成功個4~5次要怎麼改善這個問題?
hi, App Inventor 只要換頁, 藍牙就會斷線. 那您如果要在 Screen1.Initialize 就直接連線的話, 有可能因為硬體還沒有 ready 的關係所以會連線失敗. 我建議還是用 Button / ListPicker 手動連線比較好
使用uno板+hc-05藍芽可以用這個範例使用?
只要是Arduino 或 Arduino 相容板, 搭配長這樣的藍牙發射器都可以. 注意鮑率即可. 請參考 Cooper Maa大大的教學 http://coopermaa2nd.blogspot.tw/2012/07/config-bluetooth-baud-rate-w-arduino.html
您好, 只要是 Arduino 相容板與類似規格的藍牙發射器都可以使用本範例, 只要注意鮑率即可. 請參考 Cooper Maa 大大的教學 http://coopermaa2nd.blogspot.tw/2012/07/config-bluetooth-baud-rate-w-arduino.html
請問為什麼我照上面的Arduino程式打編譯的時候會出現
sketch_may15a.ino: In function ‘void loop()’:
sketch_may15a:25: error: ‘u2019a’ was not declared in this scope
sketch_may15a:25: error: expected `;’ before ‘u2019’
您好, 我剛剛直接從網頁複製本篇程式碼去編譯是正常的喔, 可否把您的錯誤畫面截圖或是把您的程式碼給我看看, 也許哪邊不小心漏了?
謝謝CAVE阿吉:
我把I2CBT.begin(38400); //與藍牙發射器的鮑率為 38400改為預設的9600 I2CBT.begin(9600);
配對也完成,手機也出現YFRobot的選項,點選已在手機安裝好的範例程式點選BTList,選擇YFRobot立即談彈出
Runtime Error Need BLUETOOTH_ADMIN permission: Neither user 10076 nor current process has android.permission.BLUETOOTH_ADMIN
end application
有沒有辦法解決?
您好, BLUETOOTH_ADMIN permission 是Android手機上對於藍牙的權限. 我曾經遇過某些型號的手機在執行App Inventor程式時無法進行藍牙通訊的狀況(但其實藍牙是好的). 這應該是 App Inventor 與藍牙之間的問題. 可能的話請換一支手機來測測看
阿吉老師你好 想請問 一下 我打算用此程式 與 DHT11(官網給的程式碼溫度的部分) 去做結合 但卻不知要從何下手 麻煩阿吉老師 提點一下
您好, 剛好友站有分享文: http://diveduino.blogspot.tw/2014/05/arduino-dht11-sensor-bluetooth.html
謝謝CAVE阿吉5/15的回覆:
依據阿吉指導參照http://coopermaa2nd.blogspot.tw/2012/07/config-bluetooth-baud-rate-w-arduino.html
或使用http://coopermaa2nd.blogspot.tw/2012/06/bluetooth-module-configuration.html介紹的USB to TTL 的轉換器
更改藍牙的設定—–下AT 指令時皆無文中OK的回應,而且新購的HC-05 BC-05皆如此
可以幫我解惑嗎?謝謝!
您好,只要是長那樣的藍牙發射器,運作方法都是一樣的,所以沒有回應OK的話,請確認線是否有接好。
或者如果您在臺北的話,也許可以找一天來敝公司。請先來電 02 2306 2900 確認公司現場有沒有人可以幫忙喔
請問阿吉老師,外接電源的圓孔,圓孔內是正的還是負的?
您好 外負內正 內部正極是因為若正極在外部這樣接觸到金屬物質的機會會大幅提升,這樣容易造成Arduino短路
您好可否請教 我鮑率已更改跟我藍芽模組相配
tx rx設定腳位反覆測試
但是數值仍是0可否提供解決方法
阿明您好, 數值仍是零有很多地方要考慮. 1. 配對了嗎? 2. ListPicker 點選之後有沒有出現對應的藍芽裝置名稱與位址? 3. 如果有, 發射器上的燈是否從閃爍變為一直亮著? 畫面應該會頓一下而非直接切換過去
請問text 為什麼要判斷=’a’?
您好, ‘a’是作為訊號傳輸的起始位元, 因為在資料傳送中可能會遺失資料, 所以我們設定跟在 ‘a’ 之後的資料才是正確的. 這是常見的 handshaking 方法
你好我想問一下
label的位子出現 0的原因跟解決方法
我藍牙鮑率確認無誤了
請問有先配對好了嗎? 點選 ListPicker 之後有出現您的藍牙裝置名稱嗎? 如果有, 點選之後, 藍牙發射器上的紅燈有從閃爍變成長亮嗎? 請檢查一下吧
手機程式拼圖我照拉
Arduino 程式碼:
if (serialA == 49){//判斷從手機接收到的訊號是否為”49″
/* 傳送封包 */
for(int j=0;j<3;j++)
I2CBT.write(Data[j]);
serialA=0;
}
這邊都沒收到是什麼問題?
我藍芽是HC-06
程式都沒問題的話, 請檢查有沒有配對, 如果確認手機有和藍牙發射器配對的話, 請點選 ListPicker 之後有沒有看到這個裝置. 連線成功之後藍牙發射器的紅燈應該會從原本的閃爍變為一直亮著.
你好,Send1ByteNumber 發出去的49沒被arduino收到,只有255被發送。要怎麼處理?
BytesAvailableToReceive()收到的都是0?
BytesAvailableToReceive() 如果都是0,代表通訊不太對噢。請檢查一下藍牙發射器的燈在我們從 App Inventor 端點選連線之後是否由閃爍變為常亮。另外鮑率是否正確?
您好,我已經成功做出來了,可是還是想請教一下Arduino這段程式可以在講解得更清楚一點嗎,好比Serial.begin(9600);
I2CBT.begin(38400); //與藍牙發射器的鮑率為 38400,這兩行程式的意思是?謝謝之前的回答喔:D
恭喜!! Serial.begin 是指 Arduino 與電腦 Serial Monitor 視窗的鮑率為9600. I2CBT.begin 則是 Arduino的藍牙發射器與App Inventor 的鮑率為 38400. 鮑率高低不是問題, 重點是要兩者一致, 否則會變亂碼
裝置有先配對完成
點選後也變成長亮了
若依然讀取不到數值
1.請在確認線有無接錯:把Arduino 變成USB to TTL 轉換器檢查藍牙是否正常時,腳位對應為Tx→Tx、Rx→Rx;但在做通訊時則是Tx→Rx、Rx→Tx
2.藍牙是否為「從機模式」:一般藍牙都可分為「主機模式」及「從機模式」。若是Hc-05藍牙,可切換主從機模式,若是其他型號的板子請確認是否為從機,若不是請更換藍芽晶片或者切換模式
3.手機是否無法正確接收藍牙訊息:若是這樣請洽該廠商的技術人員
想請問 把可變電阻部分改成 HC-SR04 超音波模組感測器
有哪幾個地方要修給嗎 謝謝您
您好, 超音波模組是數位裝置, 可變電阻是類比裝置, 兩者不一樣. 請參考Cooper Maa 大大的教學文: http://coopermaa2nd.blogspot.tw/2012/09/hc-sr04.html
您好 上敘的那篇 有看過 在於說 如果想將 測得的數據以封包式 經過藍芽 再傳回手機裡
讓手機 去 解讀後 顯示其數值
是不是就完全不一樣的寫法
另外App Inventor 出來的程式碼 可以匯入到 Eclipse 或 JAVA 繼續使用嗎?
您好: 這樣寫法的確不同, 封包格式可以自訂的. App Inventor code 無法匯入到 Eclispse 中喔, 我聽說有轉譯程式, 但沒有用過.
請問 如果將此電組部份改成用DHT11 ,ARDUINO的程式碼部分需要改很多地方嗎?
有看過上面的前輩回應 但 那個是與電鬧做連結的 我看不太懂如何將它改成與手機連結 傳遞溫度值 麻煩阿吉老師 謝謝
您好, 可參考本篇說明http://atceiling.blogspot.tw/2013/04/arduinodht11lcd.html. 與手機連結重點在於傳值, 只要Arduino能正確取到數值之後就好辦了. 您可以將這兩隻程式組合起來即可.
另外 DHT11 是數位裝置, 和我們介紹的類比裝置所要連接的腳位不一樣喔
您好,我把您的inventor上面設一個sound,在arduino程式不更動的情形下,讓inventor接收按鈕類比資訊,如果inventor的clock計時到了,sound響起,我再用arduino上的按紐關閉inventor sound,這樣,在不做大更動的狀況下,以上功能是可以達成的?
您好, 可以做得到. 但是按鈕是數位的吧, 只是提醒一下. 就是透過 Arduino 按鈕是否壓下去控制 App Inventor 的 Clock.Timer enabled屬性,藉此來關閉sound. 不過 sound 概念上是短音效,所以應該是 clock.timer 去要求 sound 重複播放某個音效檔, 再透過 arduino 按鈕來關閉它喔
老師你好,我嘗試用arduino發送一數字給手機,來關閉inventor程式,一直不成功,每次inventor計時器數到零的時候,不斷跑出false字樣,我很確定arduino沒有問題,能否請教inventor的部分
關閉 Inventor 程式應該就是 Control 指令區中的 close application 指令. 只要App Inventor 接收到某個數值, 就用這個指令來關閉程式, 這樣應該沒問題
請問 我把https://github.com/RobTillaart/Arduino/blob/master/libraries/DHTlib/examples/dht11_test/dht11_test.ino#L21 此程式碼與本篇作結合,在本篇程式碼中加上了dht DHT,更改了讀取的腳位,也將溫度的部份貼過來這,最後寫入程式後使用serial monitor 去檢視發現 有溫度值 ,但多出一個3百多的數字,最後用此範例的APK檔去做測試 發現TEXTBOX1 沒有數字,請問是哪裡出了問題?
hi, 我們沒有這個硬體所以無法測試, 不過您可以把 arduino code 寄給我看看嗎? nissin@cavedu.com 也請附上您的 serial monitor截圖好嗎? 我來看看那個300多的數字
請問我全部都正常,藍芽接收器上也有恆亮紅燈,開啟arduino monitor也有顯示出數值,但是手機就是一直顯示0,請問是哪裡出了問題?
您好 請問您的藍牙Buadrate是否有誤?
另外檢查一下您的藍牙是否有”主機”功能 若沒有該功能是無法傳送訊息
你好
請問arduino 傳字串怎麼用手機藍芽接收?
您好, 把這系列文章看完就會很明白囉
請問老師,inventor 警告視窗有辦法像LINE依樣待機時還會跳出警告視窗嗎?
您好,應該無法,因為 App Inventor 無法寫成 service 常駐程式。感覺它需要一直保持在前景才會作用。
請問…如果有一個以上的類比訊號要傳送到android,程式要如何修改?? 謝謝
您好,是類似像兩個可變電阻這樣嗎?您可以輪流發送(前面加上對應的判斷字元來避免讀取錯誤),或是把兩筆資料組合成一個整數之後再送出去(位元左移的概念)。
請問一下 如果要接收G-sensor 三軸的訊號 Arduion的程式編碼跟inventor的程式 要如何改 可以大約跟我說一下嗎 感謝老師
您好,概念是一樣的,但要先請問您可以在 Arduino IDE 的 Serial monitor 中看到 G sensor 數值了嗎?不論您使用的是哪一款,應該都有範例程式可以用。再結合本文程式碼應該就可以了
您好, 我使用HC-06模組的時候一切正常
但是我換成HC-05的時候手機的TEXTBOX就不會跑出值了?
我有把HC-05設定成Slave
Arduino的code都一樣
請問是什麼問題呢?
您好 您可以先利用[雙A計劃] Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅測試藍牙是否正常運作
您好,請問Arduino 是否有可以整個 data[] 一次送的寫法?
不要一個byte一個byte這樣傳?
謝謝
您好 這方法是可以 但對於APPINVENTOR來說較為不穩定所以我們才會用這種寫法
你好,請問用App inventor寫成藍牙直接讀 Serial Monitor要怎麼拼?
您好,不太懂您的意思。Serial Monitor 是Arduino 的虛擬I/O視窗,您的意思應該是 App Inventor 透過藍牙去讀 Arduino 的類比或數位 value?這在這系列文章中應該講的很清楚了
好吧,謝謝,我再看看
老師您好,我想下載您的範例程式,但是點進去的網頁都顯示”找不到頁面”,裡面的檔案只有”AppInventor_Arduino.rar.1405957231417″可以下載,想請教老師關於範例程式還有哪裡可以參考。
群逸您好,請由此下載就好,原本的連結內容也修正囉。AppInventor_Arduino.rar 就是雙A計畫系列文章的範例檔,裡面有 EX1, EX2 ,EX3 ,分別為控制LED、滑桿控制LED 以及手機接收 Arduino A0 類比訊號
謝謝老師的回答,我想再請教一個問題:如果我想從arduino傳送第二筆資料(資料為1,2,3…之類的),大概的步驟可以如何操作?
目前我的作法是:
1. 在Arduino新增一DataNum[ ]陣列放資料,再設if( ) 和 for( )迴圈來放新的陣列,條件為(serial == 48)。
2. 在App inventor我試了在Clock1裡面,依樣畫葫蘆疊了跟上面一樣的積木。一開始傳送49給aduino後開始傳送Data[ ]陣列,傳完之後,接下來再傳送48給arduino,之後再傳DataNum[ ]陣列。
3. 之後在app上的部份,兩個textbox都跑得不太順,請問這是必然的嗎?
您好,請參考這篇吧,http://wp.me/p3T9Qk-4b7。可以從 Arduino 端依序發送兩筆資料給 App Inventor。lag 是一定的,畢竟 App Inventor 的程式會比較肥胖,您可以考慮將兩筆資料組合成同一筆數值之後,做為單一數值送出。只是這樣可能會為了組合而犧牲一點精確度喔
老師您好 您曾說Android手機可以同時連兩台以上的 Arduino,那我想從一塊Arduino讀取類比值後經由手機再透過藍芽傳給另一塊Arduino,這可以做到嗎??有相關文章可以參考嗎
您好,這樣是可以的喔。只要在App Inventor 程式中用到2個BluetoothClient元件就可以用藍牙連到兩片Arduino。之後再把這兩個手機程式組合起來就好,Arduino端程式應該是不需要修改才對。
您好 這部份把藍芽用wifi取代的話,有辦法接收到arduino傳回來的資料嗎?
您好,當然可以啊,都是序列通訊的概念喔。只是您要購買 Xbee 這樣的無線通訊模組就是了(不太便宜)
請問 可以傳輸2個以上的值嗎?
如果可以那大約要怎麼做修正呢?
您好,可以的,您可以把兩筆資料分別送出,例如先送data1 再送 data2。或是把兩筆資料組合起來,例如兩筆資料的範圍都是0~100的話,可以用 data = data1 * 100 + data2 (類似位元左移的概念)
老師您好 我想要利用ARDUINO傳送(經由藍芽)類比訊號至手機作分析、示波等功能。想請問一下 是否有提供ANDROID的程式資訊當作參考範例修改。
您好,App Inventor 沒有很強的動態圖表功能。如果要用 Android 的話,目前沒有馬上可用的 code, sorry
您好:
請問有辦法直接連接外部藍芽裝置例如藍芽耳機(不透過Arduino)
將藍芽麥克風的訊號傳到APP 顯示在TEXT BOX上嗎?謝謝!
您好,App Inventor 應該無法做到這個功能喔
您好,請問我做遠端開電燈及回傳電壓值兩個功能,但一個是從手機下指令給arduino動作(開燈),另一個是從arduino回傳值側到手機(電壓值)
這兩個功能分開做都可執行,但在同一個程式裡就不能執行了,請問是什麼問題?謝謝!
您好,可否詳述不能執行的狀況?或者請將您的 .aia 以及 Arduino code 寄給我們:service@cavedu.com
請問如果說 將可變電阻換成2.3個溫度感測器,這樣藍芽有辦法一次傳輸嗎? 如果可以那該如何下手? 謝謝
您好 方法一樣您只要在arduino接受後丟封包給手機即可
Ex ‘a’12 134 17
您好 目前遇到的問題是 Arduino monitor 上面一直有200~400內的數值一直跳 手機APP沒辦法接受我monitor傳的資料..
請問是甚麼問題呢? 麻煩您了
monitor 傳的資料?這份程式是把 Arduino 的 AO腳位狀態(現在接上了電位計)透過藍牙傳給Android手機。您看到的 200~400 的值應該是正常顯示的結果,轉動電位計應該就能看到數值變化
你好 我想請問 我們做了一個 有關藍芽的APP 在第一頁 做連線的動作 在選擇要的動作跳到第二頁 但是只要一跳到第二頁 就顯示錯誤了 要怎麼讓第一頁跟第二頁 的藍芽是可以相通的 謝謝
您好,App Inventor 的藍牙(BluetoothClient)只要跳頁就會斷線,這件事目前應該是無解的喔
請問我們藍芽有亮紅燈,app也連的到藍芽,但在TEXT BOX一直沒出現數值,還可以輸入文字,是哪一部分出問題,謝謝
您好,請問 Arduino 端的程式有執行起來嗎?可以按 reset 鍵試試看。另外您可以把 Serial monitor 截圖下來給我們看嗎?請寄到阿吉的信箱 nissin@cavedu.com
請問我傳值透過com port來看Data[2]數值,怎是出現【a..】呢??
還是需要把他去轉數值??
如果是使用android ADK來做的話 該如何去把那個數值轉成正確的數值??
您好,ADK 會比較複雜,無法用 App Inventor (不過我想您應該知道這件事才對). 請參考這個聯結有我們 ADK 一些成果
謝謝囉, 我會去看一下的 3Q
您好 傳輸值部分問題已解決 目前想要將脈搏與含氧量感測器透過藍芽連結傳輸檢測的資料,可是在Arduino Code中,我打入
#include
#include
#include
#include
卻無法進行編譯!
出現以下訊息:
Arduino: 1.0.6 (Windows 7), Board: “Arduino Uno”
SoftwareSerial\SoftwareSerial.cpp.o: In function `__vector_5′:
D:\arduino\arduino-1.0.6\libraries\SoftwareSerial/SoftwareSerial.cpp:319: multiple definition of `__vector_5′
PinChangeInt\PinChangeInt.cpp.o:D:\arduino\arduino-1.0.6\libraries\PinChangeInt/PinChangeInt.cpp:163: first defined here
大概是指無法包含兩個函式庫?! 請問是否有辦法解決呢 麻煩您了
您好,可否把您的 arduino sketch 與要用到的函式庫寄給我,幫您測測看?nissin@cavedu.com 初步看起來是 _vector_5 被重複定義到了
你好 ! 請問 !
使用範例按照正常程序下執行,手機連結藍芽模組從閃爍狀態變成(每秒閃兩下),手機接收不到數值原因?
hc05藍芽鮑率為9600,是否程式碼改為I2CBT.begin(9600)??
您好,如果連接上的話,藍牙發射器上的紅燈會變成恆亮,不會閃爍喔。
你好!請問!
我藍芽無法連線,有解決方法嗎?
藍牙發射器上的紅燈目前每秒閃兩下,我在各大網站上尋找相關問題…
都找不出解答,想請大大教我如何解決HC-05關於連線問題…
懇請大大,教教我 , 謝謝大大!
您好,請先檢查發射器接線有沒有對,再從手機的藍牙選項去看看有沒有這個裝置。如果有看到的話就可以點選並配對。
謝謝大大 我已解決了!!!
喔喔,恭喜,請問問題是出在哪邊呢?
您好~請問一下:
如果把PART1(LED開關)與PART3(接收類比)兩個合在一起,arduino在接收藍芽傳回來的資料時,是不是會衝突?
PART1中的『Serial.print(cmmd[i]=char(I2CBT.read()))』與PART3中的『 serialA=I2CBT.read()』
前者是為了讀取Turn ON/OFF傳回來著值,後者是為了判斷arduino與手機是否一樣的值才傳值到手機的對吧~
可是這樣測試下來好像就衝突了,改怎麼處理呢?
跪求解答囉!!!
您好 有幾種方式:在手機中設定切換模式切換成讀取模式或者控制模式;或者利用封包第一個字元讓ARDUINO決定要執行哪個部分
請問如果我要在下面加一個類比訊號變成的波型圖要怎麼寫,謝謝
您好 你可以使用canvas指令去撰寫
您好
順便說一下傳值好了
基本上資料庫TAG名稱相同,可以在不同頁面收到,但是必須要相同的TAG名稱
喔喔~ 好的,感謝您的說明
你好,請問我想做藍芽控制紅外線動作感測器,並且偵測到時,會在手機的Lable上顯示”Danger”,但是lable卻毫無動靜? 謝謝,打擾了。
您好,可否分享一下是怎麼解決的呢?
您好~請問一下:
如果把PART1(LED開關)與PART3(接收類比)兩個合在一起,arduino在接收藍芽傳回來的資料時,是不是會衝突?
PART1中的『Serial.print(cmmd[i]=char(I2CBT.read()))』與PART3中的『 serialA=I2CBT.read()』
前者是為了讀取Turn ON/OFF傳回來著值,後者是為了判斷arduino與手機是否一樣的值才傳值到手機的對吧~
可是這樣測試下來好像就衝突了,改怎麼處理呢?
跪求解答囉!!!
您好 你可以利用判斷式優先讓其中一個執行
這樣可以減少衝突
請問有範例嗎,我是新手不知該從何下手,謝謝
您好 您可以先從本系列PART0開始看起
您好~請問一下:
已下載執行part3,arduino是Uno,但是與手機是無法連線,(有先配對,和試過其它arduion和anduriod(AI2)控制LED亮滅,是okay的GOTOP出的)
若可以,你可以給我aia檔,謝謝!
Runtime Error
Need BLUETOOTH_ADMIN
permission: Neither user 10094 nor current processhas android.permission. BLUETOOTH_ADMIN.
您好,這個問題應該無解。因為App Inventor 在某些 Android 裝置上會無法打開藍牙的權限(BLUETOOTH_ADMIN)。如果可以的話,有辦法換一台Android裝置來試試看嗎?
.aia 與 arduino sketch 等原始檔在文章中就可以下載囉
大大你好 !!
我想請問1個問題 !!!
如果我想從已寫好的程式範例中LCD上顯示的數值,直接將數值透過藍芽傳送到手機中。
程式碼該如何撰寫??? 請大大指導指導 !! 謝謝大大 !
您好,您應該是先有這個數值才會顯示到 LCD 模組對吧?直接把這個數值用同樣的方式丟給 App Inventor就好啦
請問一下Arduino程式,關於我在上面接了A0與A1倆個接腳,分別從手機端發送一組訊息給A0或A1來啟動讀取訊息,
但是這段在執行上有些問題,我是先在Arduino程式內寫了收到來自Android端一個訊息後,就發送在A0上讀到的訊息給Android,
然後就關閉A0的讀取,直到第二個接受來自Android端第二組訊息後才啟動A1的讀取,然後資料就變成拼命送過來….
我Android來不及接受整個數值…亂套了.
您好,要不要試著用同一條線,兩個數值輪流發送?或是把兩個數值組合起來,到App 端再拆開?
你好
想請問 有沒有不輸入數值 可以直接得到 感測器值的做法呢?
謝謝你
您好, 不太懂您的意思.
可以問一下範例無法開啟的原因是甚麼呢~我們常是很久都開不起來
您好,請問是 .aia 還是 Arduino 開不起來?
請問波型圖的X軸要設甚麼?
我Y軸是設golbal number是對的嗎
您要用什麼方式來呈現波形圖呢? Google Chart API? 還是自己畫?
我使用的板子是 arduino uno & HC-05 藍芽
參考Part3 ,這是讀取類比訊號數值再經由藍芽傳送到手機APP( 數值是 0 ~ 1023 ),
該怎麼修改藍芽 code 可直接經由我寫好的溫度數(ex. 36.22 °C )值發送數值到手機顯示呢? ( 懇請大大指導一下 )
( 我只想顯示溫度在手機上 只求溫度數值傳到手機上 溫度code我已完成 藍芽code把我頭搞大了 )
https://www.youtube.com/watch?v=tZXBnaVVjwM ( 在手機上秀 出溫度 該修改哪裡 懇請大大 指導指導 )
您好,請問您是否可顯示 36.22 於 Arduino 的 Serial Monitor? 其實對於Arduino 來說,就是發送整數出去,所以數值來源沒有影響。如果您希望在 App Inventor 畫面上看到小數點的話,有個偷雞的辦法就是先把溫度值 x 10 之後再送出(或直接轉成整數),例如 362 實際上代表 36.2度。App Inventor 接收到之後再除以10就好囉
您好 如果是要讓arduino回傳0跟1給android 需要在Arduino做什麼動作 >
以及appinventor內只需收到Receivesigned1Bytes=0或1 做某些事情 即可 還是需要加上其他東西?
Arduino 去改 I2CBT.write(); 把裡面的東西換成一個變數或直接寫 1 or 0,然後每秒交換一次,例如 I2CBT.write(1); delay(1000); I2CBT.write(0); delay(1000); 這樣就可以。
App Inventor 端的話,就不需要這麼複雜,直接去判斷收到的內容為 1 or 0 並執行相關動作就可以囉
板主您好
小弟我想讓電阻大於某範圍時 手機發生震動
請問我應該將下面的指令加入程式中的何處?
http://www.appinventor.tw/ai2_media_sound
小弟我是invento新手加程式白癡
嘗試多次都以失敗收場….跪求板主開明…
您好,應該是在 Arduino 端加入類似這樣的 code: if( analogRead(A0) > 500 ) { I2CBT.write(1); } else { I2CBT.write(0); } 然後在 App Inventor 端去判讀收到的到底是 1 or 0,這樣就搞定囉
大大你好 ! 請問 !
app inventor 顯示數字方塊 是拖移哪個方塊鈕?
是Lable 還是 Textbox ??
還是其他按鈕?
無論我怎麼寫 都跟範例上的結果都不一樣…
您好,本範例是使用TextBox 來顯示 Arduino 傳來的值。但是您要用其他元件也是可以的,只要這個元件有 Text 這個屬性就可以用來顯示數字或文字
請問如果是Google chart 要怎麼用 服務不是停止了嗎?
很正常啊, https://developers.google.com/chart/ 不要嚇我QQ
您好:
我想請問byte的型態是否為char?
有點搞不懂app inventor的型態宣告和Arduino使用的型態
謝謝
您好,byte 就是 8 bit(01001100這樣的東西)。char 則是字元,兩者不同。App Inventor 的資料型態只有 number, text, logic 以及隱藏的 byte。有關Arduino 的資料型態請參考http://arduino.cc/en/Reference/HomePage
你好我想請問
App Inventor 2 的
After 跟 Before Picking
是要從哪裡拉出來呢???
您好,需要先在Designer頁面中新增ListPicker元件。就可以在 Blocks 看到本元件,接著找到這兩個事件
byte cmmd[20];
int insize;
這個是什麼??
第一個是宣告名為 cmmd 的 byte array,長度20,第二個則是宣告名為 insize 的整數變數
有兩顆BT
能夠讓手機分辨現在連接的是哪一顆BT嗎?
謝謝
可以,因為兩者的 MAC Address 是不一樣的。就是長得像這樣的東西:98:D3:31:30:09:43
請問如果是壓力感測的話跟可變電阻是一樣的程式嗎?
只要是類比元件就是一樣的效果,不過先請確認它的最大值與最小值是多少
ERROR 515:not connected to a bluetooth decive. 這個問題已經解決了
我想問程式開頭的pre code 和結尾的code pre是做什麼的??
這是 wordporess 程式碼小工具的前後標頭,請忽略它,我也不知道怎麼移除,sorry
ReceiveDatafromArduino.aia 這個檔案目前不見了
可以和您拿一份嗎?
我目前是將溫度感應器接上去
在編寫手機端出了一些小問題 希望能修改你的程式來使用 謝謝
您好,已更新,請重新下載文章中的連結即可
真是太感謝您了!!
請問一下 如果想增加傳輸距離 使用WIFI的部份,將數值傳至伺服器,再從手機端輸入IP觀看數值 可行嗎? 請問有範例嗎?
要做到這樣的話,以往是使用 Xbee( 要兩組),但現在的話我會建議您使用 Arduino Yun 比較方便,價錢也差不多 (Arduino Yun 與 Arduino Uno + 兩組 Xbee 相比). 請參考我們的 Arduino yun 教學投影片 http://www.slideshare.net/NissinAllelujahnissin/
手機接收端和藍牙發射器(HC-06)已預先完成配對了,
ListPicker之後也看到HC-06(但數值無收到)
頻出現 (Error 515:Not connected to a Bluetooth device)
和手機藍芽版本有關係嗎?還是哪裡沒注意到!?
煩請協助,Thx!!!^^
錯誤訊息就是無法連到藍芽裝置,請解除配對再試一次。如果是使用 HC05 或 06 的話,我們這邊試都沒有問題喔
老師請問我可以將可調電阻改成感測器收進來的值(A0)傳至藍芽嗎?
您好,只要是類比元件(接在 A0~ A5 腳位) 就都是一樣的方法。如果是數位元件的話,就是另外一種作法囉
想請問一下,我把 ARDUINO的int i=analogRead(A0)這行,改成了 int i=digitalRead(7)就能收到數位值嗎?
另外還請問,我連結配對藍芽後,安卓的手機會沒顯示東西。
digitalRead 只能回傳 0 or 1. 請確認這樣是您要的結果. 另外要先把手機與藍牙發射器配對, 這樣才能在 app 中的 listPicker 看到這個裝置
請問一下, 如果我一樣想將類比感應器數值傳送至手機, 但我用手機APP把感應器數值吉時繪製波形圖, 這樣該怎麼作呢?
您好,App Inventor 要畫即時波形圖有點吃力啊,但透過 Google Chart 應該可以做到,請參考http://www.appinventor.tw/google
不好意思, 請問一下如果要在手機APP中將感測器data即時描繪成波型圖, 如同示波器那般的功能, 該怎麼作呢?
您好,在 App Inventor 中做到這個功能有兩種:1. Canvas 打點(drawPoint),但是非常麻煩。2. 使用 Google Chart API,請參考 http://www.appinventor.tw/gchart 與 http://www.appinventor.tw/ntut_app/google-chart-api
我想請問一下 有辦法 在不傳送49這個數字的情況下 讓手機正確接收嗎?
您好, 由於無線傳輸一定會掉封包,因此加入 49 作為確認用的檢查碼。如果不加的話,數字可能會亂跳。
想請問如果要接收數位值,arduino那端的程式要如何更改。 我使用範例程式配對藍芽成功後,我也選取了藍芽後,app會整個黑掉,請問是什麼原因??
數位資料的傳送方法是一樣的(應該說 I2CBT.write() 只管把括號中的東西送出去)。如果配對藍牙成功,但畫面會黑掉… 可否把您配對的畫面與執行畫面都給我看看呢?
我寄E-MAIL給您了。
您好,請問您是用 air…@gmail.com 這個信箱嗎? 沒有收到信喔 請再寄一次到 nissin@cavedu.com 好嗎?
你好,看了你的教學受益良多!!
照著你的教學實作後發現有問題,於是下載你的程式碼後,也出現一樣問題
問題如下:
可變電阻的值在Serial裡面是正常的(0~1023)
但是在手機上的顯示變成 9 265 521 777 只有這4個數字
不像影片中的,直接顯示Serial裡面的值,請問這問題點出在哪@@?
感謝大大
您好, 請確認兩端的程式是否都正確, 我們上周有辦理兩梯這個主題的研習, 都正常喔
不好意思請問
再監控式窗看得到值從0~1023的改變
可是在手機上就只有9 265 521 777四種數值而已
您好, 請確認手機與 Arduino 的程式是否正確, 我們上周辦兩梯研習都很正常喔
阿吉老師您好,我想請問一下,有辦法將兩個由藍芽所讀取到的感測器的值共同傳遞至另一個藍芽中嗎?
然後再由這個藍芽所讀取到的兩個值傳至手機端 (請問有範例可參考嗎)
Jeff, 不好意思我不太懂您的意思? 是兩台 Arduino 丟值給同一隻 Android ?可否說清楚一點呢?
抱歉,就是說兩台Arduino(hc-05+DHT11),利用藍芽傳至一台手機(Android)上,請問這樣可行嗎? 麻煩阿吉老師給些方向 謝謝
可以的,App Inventor 程式要使用兩個 BluetoothClient元件來分別管理這兩個藍牙連線。Arduino 端程式應該不太需要修改。
不好意思我都是從網站下載的可是重復安裝了很多次都還是只有四種數值再跑
您好,請參考常見問題 http://wp.me/p3T9Qk-4b7
不好意思
我想問 如果我在arduino 裝超音波感測器,
然後從手機端接收到超音波測到的距離資料 要怎麼做封包和接收?
謝謝
您好,請先用 serial monitor 看看超音波的值是否正確,如果正確的話就直接把這個值送出即可。藍牙只管送出,不管資料來源。
不好意思
我想問 如果我在arduino 裝超音波感測器,
然後從手機端接收到超音波測到的距離資料 要怎麼做封包和接收?
謝謝
您好,同上述回覆
請問我的簡訊APP想要別傳過來10然後我的APP就要自動把它加10,請問可以嗎?麻煩阿吉老師給些方向 謝謝
您好,就把 number 這個變數 +10 再存回 number 就好了,用C語言語法來說就是 number = number + 10; 或簡寫成 number += 10;
你好 我所使用的藍芽模組是HC-06 主從模式也確定過是從機模式 程式也檢查過 但在測試時讀到資料仍舊無法回傳至手機 請協助謝謝
請參考常見問題 http://wp.me/p3T9Qk-4b7
你好我想問一下app inventor2如何接收 Arduino的回傳值我想請教一下大大??
?這篇就是在說這件事啊,請問是哪邊不清楚嗎?
我是想請教 我是用 label下去接收 但是他都收不到數值 一值顯示藍芽錯誤 我該怎麼解決
您好,顯示在哪裡都是一樣的概念。您的問題如果是出在藍牙的話,請確認是否有配對?並請告知您 Android 手機上的錯誤訊息好嗎?
我想問一下就是Arduino傳直給手機 EX:他傳1但是app卻不是顯示1 如果想要兩邊都顯示同樣的數值我要怎麼改程式 我是用你這個範例去修改的
yo, 不太懂您的意思。我們這個範例就是 Arduino 與手機都是一樣的數值啊
你好我想請教一下如果要接受arduino的回傳數值,我是想收5筆數值 我不知道要用哪個元件來做接收的動作
另外還有一點就是 我接收出來的數值卻跟adruino的數值不同而且有亂碼 我該怎麼處理
您好, 五筆數值…工程有點大喔, 但還是一樣是序列通訊的概念。換言之,您可以輪流把這五筆資料加上標頭之後丟出去。Arduino 那邊則是用一個長度為6的陣列來依序接收並對應。不過這樣數值的 delay 會相當明顯
順道一問,請問您這個範例有執行成功嗎?
不好意思 請問一下如果說我將可變電阻改成其他的感測器,例如:MQ2這類的需要修改程式?
您好,MQ2 gas sensor 也是類比感測器,只要數值範圍也是0~1023的話,本程式可以直接套用喔
我想請問一下 如果我Arduino輸出的資料是 P=數字 R=數字 Y=數字 然後我App inventor 2 這邊我設置三個Textbox 要個別抓取它們三個的參數 Blocks 要怎麼拉 因為我只會妳們這種全部都抓出來~~”
我不太懂您的意思,您希望 Arduino 丟出來的東西是三筆數字的結合?還是”P=數字 R=數字 Y=數字”?我建議前者比較好,您可以把接收到的值用 text 的 segment 指令來切開就好。或是用數學指令進行 “除法” 運算也可以。拿到正確值之後再用 text 的 join 指令組合即可。教學:https://www.appinvetor.tw/ai2_text
你好 我想請問一下如果我要將此程式改成副程式用呼叫的方式 需要修改甚麼地方?
您好,請問是手機端還是Arduino端?哪個地方要包成副程式?
請問一下 如果我要將此程式改成副程式搭配其他功能 需要如何修改?
您好,請問哪些指令要包成副程式?要加入哪些功能?可否說明詳細一點呢?
宣告另外的函式就像這樣:
void haha(){
digitalWrite(13,HIGH);
delay(500);
}
之後只要用 haha(); 就可以呼叫這個函式了。當然也可以讓函式可以接受外部參數,例如:
void haha(int time){
digitalWrite(13,HIGH);
delay(time);
}
當我們用 haha(300); 呼叫時,D13腳位(LED)就會亮起 0.3秒,您可以填入任何整數來控制這個函式
您好, 五筆數值…工程有點大喔, 但還是一樣是序列通訊的概念。換言之,您可以輪流把這五筆資料加上標頭之後丟出去。Arduino 那邊則是用一個長度為6的陣列來依序接收並對應。不過這樣數值的 delay 會相當明顯
順道一問,請問您這個範例有執行成功嗎?
答覆: 範例是有成功只是我不知道怎麼去做修改
想問你是否可以教導一下小弟求求你 阿吉哥~
我手邊有傳兩筆(A0 與 A1) 兩筆資料的code,請留 email 我寄給您吧
email wsxr0811@gmail.com
hello, 已經發文介紹了,請您參考一下喔 http://wp.me/p3T9Qk-4b7
你好我想請問您一下有關app inventor2接收封包的部分 我是想接收血壓模組的量測值 血壓模組胞率115200 他是固定的不能修改 但是現在app完全沒顯示封包數值 我不知道是app的問題還是arduino問題希望可否留個信箱方便聯絡
您好,我的 email:nissin@cavedu.com 想先請問是否可在 serial monitor 中看到正確的數值?因為對於arduino來說就是把數值丟出去,與數值來源無關
抱歉一下 可以請問 用APP I 可以改變手機的情境模式嗎?
無法喔~
你好 你在影片中是透過旋轉可變電阻來控制數字大小
如果我是要透過聲音來控制顯示的數字大小(聲音越大數字越大,越小則數字越小)
請問程式部分該如何做更改或下手
謝謝
您好,只要把可變電阻改為您要的聲音感應模組即可。
我想請問一下
如果是不想透過一些媒介如:Arduino和樹莓派來達到閃爍led
而是直接透過手機藍芽聯結led燈呢?
不知道您有什麼想法嗎?
您好,LED 只對電流有反應,還是需要一個裝置來接收從外部裝置(例如手機或電腦)經由藍牙送來的指令喔
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x4b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x4b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x4b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x4b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x4b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x4b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x4b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x4b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x4b
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x4b
上傳到板子時發生問題。可行建議請見http://www.arduino.cc/en/Guide/Troubleshooting#upload。
請問我上傳到板子卻發生這樣的問題 怎麼辦呢????
請拔掉USB線重插一次,或是換一個 USB 接頭試試看
你好,請問我用你這個arduino程式上傳到板子上之後
用手機連接藍芽之後按BT List 連接之後
一直跳出 “unable to connect. is the device turned on?”
但藍芽接受器本來紅燈一閃一閃
連接之後 紅燈變成持續閃
應該是有連上才對啊 怎麼會發生這樣的問題??
您好,可以按 Arduino 的 reset 強迫重新執行程式,有時候是藍牙有接收,但Arduino在偷懶 haha
還是不行耶,我app和arduino都照著範例給的 直接用 為什麼還是一直連不到= =
您好,請參考這一篇有常見問題說明 http://wp.me/p3T9Qk-45F
請問為什麼我連接HC-06之後 會跑出 Error 516: Unable to write:Broken pipe
您好,請參考常見問題 http://wp.me/p3T9Qk-4b7
哈囉請問為什麼我arduino程式和app都是從這裡直接抓下來用
為什麼連結之後手機只會顯示7.263.519.775 四個數字
我程式和app都是直接用的
請參考常見問題 http://wp.me/p3T9Qk-4b7
你好 版本一 跟二有差別嗎 afterpicking beforepicking找不到 請指導一下 方便的話可以加個line交流一下
您好,兩者沒有差別,afterpicking beforepicking 都是 ListPicker 元件下的事件,就是在畫面最上方的 [BT List],他是 ListPicker 不是 Button,請下載 .aia 原始碼後在您的 App Inventor 中開啟即可。
建置選項已變更,重建所有
sketch_jun01a.ino:1:12: error: stray ‘#’ in program
sketch_jun01a.ino:1:1: error: expected unqualified-id before ‘<' token
編譯時發生錯誤
您好,code 最前與最末的 < > 請不要複製到 Arduino IDE 中喔
數值只會在Arduino跑 手機接收不到 disconnect 可以按 但一直跑出error515的訊息
您好,Arduino 端可以跑代表元件連接正確,但手機收不到就是藍牙模組或是程式哪邊有問題喔,請參考常見問題 http://wp.me/p3T9Qk-4b7。
所以是要用那個電路+程式去測試板子跟手機嗎 還是改我HC-06的鮑柏率
鮑率先不用改,建議您先從第一個範例依序做看看。這樣日後在碰到問題時比較容易釐清是哪一端的問題
你好 我一直手機畫面一直跑不出數值 我在轉可變電阻arduino測試視窗會重0~1023 但是手機就是一直跑不出來 板子是HC-06
您好,這樣代表藍牙無法送出。請參考常見問題 http://wp.me/p3T9Qk-4b7,並請問之前的 App Inventor 控制 Arduino LED 有成功嗎?
你好
我的狀況是這樣的
我想做一個可以切換螢幕又保持藍芽連線的app
可是Screen1順利連接後切換到screen2就失去連線 也用Isconnected檢查過了
請問有什麼方法嗎
您好,App Inventor 只要換 Screen 就會斷線,這點應該無解喔
若出現515錯誤 , 增加如下 :
when Screen1 .lnitialize do
最後面加上:set Clock1 . TimerEnabled to false
when Disconnect .Click
最前面加上:call BluetoothClient1 .Disconnect
您好,感謝您的建議。的確是藉由 Timer 來間接開關藍牙功能沒錯。
你好~
Android端與Arduino端都直接下載你們的範例原封不動使用,
腳位確定沒插錯、藍芽模組(HC-05)鮑率也都試過,
但終究只能在序列埠上看A0的值,
透過藍芽傳給手機一直沒辦法成功…只確定藍芽有成功連線但始終收不到數值。
想先試試看I2CBT.write(1)傳給手機,
但數據依然沒辦法顯示…
想請問還有沒有更簡單的範例測試?
例如:
I2CBT.write(1),手機上顯示1
I2CBT.write(0),手機上顯示0
麻煩解惑了,謝謝~
您好,可參考此篇 App Inventor 傳值給 Arduino http://wp.me/p3T9Qk-2o1, 是比較簡單的範例您試試看囉
請問在APP出現中文字 該怎麼做更改
不太懂您的意思,可否詳述?
請問
我想要當類比訊號>800 手機上面顯示:1、當被比訊號>600 手機上面顯示:2…..以此類推
該怎麼做呢?
if( A0 > 800) { 送出’a’},接著在 App Inventor 就是 Bluetooth.ReceiverText 指令去檢查,如果收到的內容是 ‘a’,就顯示 1。其他更多狀況就繼續複製貼上,這樣就搞定啦
您好
我想請問我都全部照做
可是手機連接上藍芽後卻出現
unable to write: broken pipe
請問作者知道是大概出了甚麼問題嗎??
您好,broken pipe 這個問題的話,我印象中無法在 App Inventor 中解決。看看有沒有別隻手機測試好嗎?
您好請問一下 您的block程式碼有出現textbox的指令 ,在Design介面卻是label而沒有textbox的方塊,是兩者都可以嗎??
您好,如果是用來顯示文字的話,的確是兩者皆可,應該說任何有 text 欄位的元件都可以。本範例沒有用到 label 喔,您是否看錯了呢?
謝謝您,因為有看上述其他問的問題以及您對他們的答覆,有說明到Label元件才提出此問題~
不好意思還想請教一下~我試著與HC-05連接,並沒有跑出數值顯示於手機上,請問HC-05的RXD與TXD是否要連接到arduino的TXD與RXD ?
還是只要照著範例僅接10與11腳位? 我也嘗試我上述的方法接,手機也是沒有顯現數值,請問是哪邊出了問題?
您好,我們使用 SoftSerial 函式庫所以拿數位腳位10 ,11 作為收發之用。當然要用 0,1 也是可以的。請參考 Cooper Maa 的教學 http://coopermaa2nd.blogspot.tw/2012/06/hc-0x-bluetooth-module.html
請問我嘗試把 part1 、 part3 結合一起
遇到瓶頸了,arduino部分,可以指點嗎
您好,請參考 part 6 Arduino 傳兩筆資料到 Android 手機 就好啦~
你好,請老師指導如何 將0~1023轉換為電壓值顯示在手機上,將這些值利用AI2即時繪製成動態曲(折)線圖,就是時間與電壓值關係的圖表
您好,本篇已經完成您所說的一半功能,AI2 繪製圖表的話我建議使用 Google Chart API,請參考本文 http://www.appinventor.tw/gchart
請問:
if get global text<0
為什麼要判斷0 是指甚麼意思?
您好,這是因為要把資料範圍從 -128~127 轉為 0~255 的關係喔
請問老師,我現在送一個晶片的波型訊號,給手機,APP有辦法判斷..那波型訊號的來源嗎? 舉例來說:我送 01010111111000011111 這個訊號, APP有辦法自己設定,判斷訊號中的0000當作APP數值的『小數點』來用嗎?
理論上可以,但為什麼要這麼麻煩?
可請老師…可一字一句的解說Arduino的程式碼嗎?因為我是門外漢,我想了解當中的原理
您好,入門教學可以參考 Cooper Maa 前輩的網站教學喔 http://coopermaa2nd.blogspot.tw/
老師您好:
請問if get global text <0,then set global text to get global text+256
這段是什麼意思?謝謝!
這是Arduino 在處理 8bit 整數時會把 0~255 當作 -128~127 所以要做數字平移 256
請問
X256是甚麼意思
位移 8位元 (2^8 = 256)
我用心跳的sensor
請問要傳值
app端跟arduino端
也是跟上述一樣嗎
您好,只要您的心跳感測器數值能在 Serial Monitor 正確顯示,數值範圍沒有超過 0~1023 的話就可以直接套用這個程式喔
請問如果arduino有裝 水位感測器 土壤溼度感測器 環境溫度感測器 那要怎麼把感測器的數值傳回手機呢
您好,做法都是一樣的,但是如果您要一次傳這麼多筆數值的話,可以參考本篇說明 http://wp.me/p3T9Qk-4b7
請問一下 我找好久,都找不到 when ______ . BeforePicking do 這個選項,求解,感謝
您好, 它就是一個 Listpicker 只是改了名字而已喔
你好,請問可以反過來用這個方式,讓app inventor傳數值而不是單純字元到arduino嗎?
真的很感謝你們這篇的教學,受益良多~
您好,傳數值當然可以。改用 bluetoothclient的 send1ByteNumber指令應該就可以囉。另外也有 send2Byte 與 send4ByteNumber 指令,就看您要從 App Inventor 端傳多大的數字給 Arduino
您好,請問一下DHT11溫濕度serial Port顯示的溫溼度值,想要用手機app來顯示;但溫溼度值是數位訊號的話,那我該如何去做修改呢?
您好, 發送出去與類比值或數位值無關。請先確定您在 serial monitor 中看到的溫溼度是正確的之後,透過本篇相同的語法就發出去了
您好 我用原程式碼 藍芽連接時 他是顯示成功但是手機卻接收不到值 一直顯示出0
接腳跟程式碼以及app都是一樣的 但是一直都是顯示出0
我用的是ky028
有小改一些
#include
int sensorPin = A0; // select the input pin for the potentiometer
int sensorValue = 0; // variable to store the value coming from the sensor
byte bbb1;
float i = 0;
float fixtemp = 20.;
int fixInput = 560;
float fixedDegreeValue = 5.5;
SoftwareSerial bbb(2,3);
void setup ()
{
Serial.begin (9600);
bbb.begin(9600);
}
void loop ()
{
sensorValue = analogRead(sensorPin);
bbb1=bbb.read();
if (sensorValue > fixInput ){ // ice cube
// Serial.print(sensorValue);
i = sensorValue – fixInput;
i = i /fixedDegreeValue;
//Serial.print(sensorValue);
// Serial.print(” and i = “);
// Serial.println(i);
Serial.print(“Temperature = “);
fixtemp = fixtemp – i;
Serial.print(fixtemp);
Serial.println(” C”);
if( bbb1 == 49){
bbb.write(fixtemp);
bbb1=0;
}
}
else if(sensorValue < fixInput) //thea cup
{
i = fixInput – sensorValue;
i = i /fixedDegreeValue;
// Serial.print(sensorValue);
// Serial.print(" and i = ");
// Serial.println(i);
Serial.print("Temperature = ");
fixtemp = fixtemp + i;
Serial.print(fixtemp);
Serial.println(" C");
if(bbb1==49){
bbb.write(fixtemp);
bbb1=0;
}
}
else if(sensorValue == fixInput ){
Serial.println(" temperature = 20 C");
}
fixtemp = 20;
delay(1000);
if(bbb1==49){
bbb.write(fixtemp);
bbb1=0;
}
}
您好,請參考常見問題(http://wp.me/p3T9Qk-45F),請先確定在 Serial monitor 看到的值是正確的,後續在傳輸上應該都是一樣的做法。
您好,請問這個例題若我需要把數值顯示的方式變成百分比,需要如何修改? EX:1000歐姆=100% 100歐姆=10%,謝謝。
您好,1000/100 = 10,後面再加一個 “%” 字串就好啦
您好,請問我要做心跳監測器,要讓這個app能出現arduino手指心跳的數值要怎麼改
您好,只要您在 Arduino IDE 能看到正確的數值,之後藉由藍牙送出的做法都是一樣的
您好,請問如果我需要把Part1與Part3的Arduino整合,要如何改寫,目前PART3的封包方式用==49之後會一直跑不出迴圈,試了很久還是沒辦法整合,手機程式方面是沒問題了。
咦,可以參考 PART 8這篇看看? http://wp.me/p3T9Qk-4rR
您好 , 如果是用力敏感測器 那旋鈕那邊的現該如何接?
怎麼改寫從藍芽設定一個數據值後藉由力敏啟動讓LED亮暗?
接法請參考葉難大大的教學,數值讀取到之後與 App 互動的方式則完全相同
您好,我下載code安裝後,發現回傳值是不連續的,且是256的倍數,即0、256、512、768,請問可能是什麼原因呢?謝謝您喔!
有可能是您轉動太快的關係,試著慢慢轉動看看,但就連續性來說一定會比在Arduino IDE 中的 Serial Monitor 來的差囉,因為組合/拆解封包都是需要時間的
老師你好
請問這部分需要 先設定 藍芽的AT mode 嗎?
且我的手機連結藍芽時 出現 ERROR 507
單人使用的話應該不用才對哩 507″error 507 unable to connect is the device turned on?” 請檢查您的Arduino 程式是否在執行中喔
請問燒入這個程式之前
需要先設定那些AT Command
我連接時有時會出現 Error 507
如果是個人使用的話應該不用修改,就用預設名稱 HC05、密碼(0000 or 1234) 以及預設 baudrate 即可,請參考我們的常見問題再看看?
我都用好app之後 Textbox1 那格出現 Hint for Textbox1
請到 TextBox 的 Hint 欄位修改成您要的文字即可(Hint文字顏色為灰色,Text欄位才會顯示為黑色,兩者不一樣喔)
如果用這個程式碼 來使用MPU6050傳送資料 這樣可以嗎?
當然可以啊,但考慮到藍牙傳輸會小 lag以及手機自己就有accel / gyro, 為什麼不直接抓手機的就好?
你好
我想問一下要怎麼讓手機直接收到RFID讀取到的資料呢
也就是說讓顯示在arduino監控視窗上的東西也顯示在手機上
作法一樣喔, 就是把 Arduino 丟到 serial monitor 上的字元透過藍牙一個個丟出去就是啦. 只要Arduino端正確顯示, 要丟出去應該沒什麼問題才對
你好老師
我想請問一下換成壓力感測器也可以嗎?
因為我換成壓力感測器但數值不會顯示出來
想請問要怎麼讓Arduino上的序列阜監控視窗的電壓數值透過這程式顯示在手機上?
還是我Aruuino程式有問題所以才顯示不出來?
想請教老師幫我解決
下面是我打的程式 我主要是想透過藍芽模組把壓力感測器數值顯示在手機上
#include
#include
#include
#define STEPS 150
int fsrData;
const int fsrPin = A0;
Stepper stepper(STEPS, 11, 10, 9, 8);
SoftwareSerial I2CBT(12,13);
byte serialA;
void setup()
{
Serial.begin(9600);
I2CBT.begin(9600);
stepper.setSpeed(150);
}
void loop()
{
stepper_continue();
fsrData = analogRead(fsrPin); // 將讀取到的數值轉為 0~1023 之間的數字
Serial.print(“FSR value is:”);
Serial.println(fsrData);
}
void stepper_continue(){
byte Data[3];
byte cmmd[20];
int insize;
char str[256];
int i=analogRead(A0);//read sensor value
serialA=I2CBT.read();
Data[0]=’a’;
Data[1]=i/256;
Data[2]=i%256;
sprintf(str,”i: %d 0: %d 1: %d 2: %d”,i,Data[0],Data[1],Data[2]);
Serial.println(str);
if (serialA == 49){
for(int j=0;j<3;j++)
I2CBT.write(Data[j]);
serialA=0;
}
stepper.step(1000);//正半圈
delay(1000);
stepper.step(-1000);//反半圈
delay(1000);
}
您好 請問您適用哪塊Arduino版?
若是Mega版 有腳位功能限制,若是uno請把腳位改成10,11試試
你好!請問”由於 Arduino A0 腳位的數值範圍是 0~ 1023,但是封包卻是以 8 bit (一位元組)為單位,因此要把數值以 8位元為單位來組合,並存入 number 變數中,就能順利將數字還原了。最後將 number 變數值顯示於 TextBox 中。”這段中的原理能更詳細的解釋一下嗎?
如果直接透過Arduino的程式上傳到APP也一樣要用到這個原理嗎?
我大概知道了 哈哈 謝謝!
加油加油~
這個範例就是要Arduino丟數值給app,但app會持續丟一個指令’49’給Arduino,Arduino會在收到這個指令之後才透過serial.write送出 data[]陣列。上面這樣已經想姐的很詳細啦~
如果把可變電阻改成按鈕開關 請問應該怎麼改???
首先按鈕讀取是用 digitalRead(8) 代表讀取8號腳位的電位, 1為高, 0為低. 後續傳送方式都一樣喔
如果跟超音波APP結合要顯示的是文字的話
也是能用這方法顯示嗎?
可以啊可以這樣 Serial.print(“the sensor value is”); Serial.println(超音波感測器值); 把讀取的語法放進去就好了
您好 請問一下要在app中加入一個按鈕 來清除藍芽接收到的數值 該怎麼做呢? 謝謝
bt.flush 類似的功能我記得App Inventor好像沒有哩,斷線重連比較快
請問一下,我手機藍芽已經有配對到了,但在BT Llist裡選完後卻出現Error 507:Unable to connect. Is the device turned on?
請問這是為甚麼? 我該如何改進? 謝謝
請檢查一下您的HC05 / 06 發射器的燈號閃爍狀況,有可能它已經先被其他程式連線,就無法透過這個app來連線。請重新啟動板子電源再連線看看
OH!! 不用了,我換台手機就可以了,雖然數值沒跑出來,但我自己研究研究,謝謝。
您好,我用arduino uno版子接HC-05藍芽模組,用app inventor寫一個程式在手機上,想透過肌電貼片產生訊號讓app動作,請問我該怎麼寫程式讓app抓到訊號呢?
您好,首先要看您在serial monitor讀到怎樣的訊號(整數, 浮點數或字元?),再依樣畫葫蘆發送出去就好啦。
sprintf(str,”i: %d 0: %d 1: %d 2: %d”,i,Data[0],Data[1],Data[2]);
請問一下這段是在做什麼?
把 Data[0], Data[1], Data[2] 顯示在 Serial Monitor上
請問只能只用1K歐姆的可變電阻嗎? 10K或20K的可變電阻是否也可以?
只要是類比元件都可以,光敏電阻、彎曲度電阻都可以自由選用。但是回傳數值的意義會不同<請自行對照您所選用的元件規格
你好,有沒有辦法做到直接從Arduino的Serial Monitor抓特定的資料,顯示在APP上呢?
例如按下開始,Arduino會執行測試,從Serial Monitor會顯示
Output A:12
Output A:13
Output A:14
等等…
那這些資料是我按下”開始”鍵才有的訊息,其他時間則無此資訊
我想擷取Output A:”XX”後面的兩位數值
因為我不是要偵測腳位,而是直接抓串列視窗裡的訊息,我該怎麼做呢?
謝謝~~
serial monitor 也是我們指定才會顯示上去的,您現在需要的是 substring 語法,請參考本頁,加油喔 https://www.arduino.cc/en/Tutorial/StringSubstring
老師你好,請問一下,如果我是溫濕度感測器,想要讓在手機上顯示感測到的溫度及濕度,那麼程式該怎麼寫,我照上面的做,數直都是好幾千,那數值應該不是溫濕度的。
請問一下如果我要用arduino做電壓表,然後我想在手機的APP上看到電壓應該怎麼做呢?(可以的話希望可以把arduino的程式和APP的程式都說明一下謝謝)
請問是直接量A0腳位上的0~1023還是要外接某種類比式電壓感測器,作法與本篇都是一樣的。確認Arduino端讀取的資料正確之後,再發送出去
阿吉老師您好:
感謝您們的教學,真得獲益良多
學生發現
在APPinventor 端上 使用的是 signedbyte -128~127
而arduino 使用的是 byte 0~255
如此解碼似乎有產生溢位的問題,是否應當把appinventor改成unsign byte呢?
Michael你好,有關負值的資訊,可以參考Appinventor的clock.time事件的積木,有針對回傳直小於0的處理方法。
老師你好,我使用的是藍芽4.0和Android手機 ,再按了BTLIST之後沒有跑出藍芽的位址
請問該怎麼改程式呢??
因為我是新手,可以麻煩老師講的詳細一點嗎? 謝謝!!!
您好,雙A計畫並非藍牙4.0,App Inventor針對傳統藍牙與藍牙4.0的元件是不一樣的,前者為 bluetoothClient, 後者則是 BluetoothLE,相關4.0的文章請參考這邊喔 http://www.appinventor.tw/iot 我們針對藍牙4.0 有 Arduino 101 與 LinkIt 7697 兩種平台,如果您是一般Arduino的話,需要另外購買HM10這類的藍牙4.0模組
好的,謝謝老師
老師你好,在請問一下,如果我在App Inventor裡 import => (BLE .aix file)
然後將bluetoothClient改為BluetoothLE 這樣是否可行呢??
我的板子是Arduino uno
這樣詢問有些模糊耶,你具體想哪些部分更改呢,Appinventor的BLE相關的文章你可以參考這幾篇看看,新的藍牙4.0建議直接使用新的方法做,這樣狀況會比較少。
[App Inventor IoT] 使用BLE(藍牙4.0)傳送光感測器數值-<a href=”http://blog.cavedu.com/programming-language/appinventor/app-inventor-iot-linkit-7697%E4%BD%BF%E7%94%A8ble%EF%BC%88%E8%97%8D%E7%89%994-0%EF%BC%89%E5%82%B3%E9%80%81%E5%85%89%E6%84%9F%E6%B8%AC%E5%99%A8%E6%95%B8%E5%80%BC/”>連結</a>
[App Inventor IoT] 使用 BLE(藍牙4.0)控制伺服馬達-<a href=”http://blog.cavedu.com/programming-language/appinventor/app-inventor-iot-linkit-7697%E4%BD%BF%E7%94%A8ble%EF%BC%88%E8%97%8D%E7%89%994-0%EF%BC%89%E5%82%B3%E9%80%81%E5%85%89%E6%84%9F%E6%B8%AC%E5%99%A8%E6%95%B8%E5%80%BC/”>連結</a>
[App Inventor IoT] 使用BLE控制LinkIt 7697 LED燈-<a href=”http://blog.cavedu.com/programming-language/appinventor/app-inventor-iot-%E4%BD%BF%E7%94%A8ble%E6%8E%A7%E5%88%B6linkit-7697-led%E7%87%88/”>連結</a>
老師你好請問一下,如果使用藍芽4.0搭配Arduino uno的話,有什麼相關的範例可以參考呢??
你好,目前我們沒有藍芽4.0搭配Arduino uno的例子,建議你可以改用Arduino101、Linkit 7697這種有內建藍牙4.0晶片的開發板
範例可以參考:
http://blog.cavedu.com/?s=BLE
http://blog.cavedu.com/?s=藍牙4.0
你好, 我照了上面的範例 LABEL 顯示是0
請問哪裡有問題嗎
你好,如果以上Appinventor的部分都確認無誤的話,接下來要確認的是:
1.檢查杜邦接線是否損壞
2.Arduino的Baudrate和藍牙的Baudrate是否一致
3.TX、RX是否有接反;Arduino的TX要接藍牙的RX,Arduino的RX要接藍牙的TX
不好意思,可以請你解釋下列程式的意思嗎?
我是初學者,不太懂,謝謝
byte Data[3];
byte cmmd[20];
int insize;
char str[256];
int i=analogRead(A1);//read sensor value
serialA=BT.read();
Serial.print(serialA);
Data[0]=’a’;
Data[1]=i/256;
Data[2]=i%256;
sprintf(str,”i: %f 0: %f 1: %f 2: %f”,i,Data[0],Data[1],Data[2]);
Serial.println(str);
if (serialA == 49){
for(int j=0;j<3;j++)
BT.write(Data[j]);
serialA=0;
}
}
由於analogread結果為1023,所以一個byte裝不下。所以用256去分成兩筆資料 (Data[1] Data[2]) ,再加上一個標頭 Data[0] 送出去
老師你好,我手機的app連結藍芽(HC05)後,變成約一秒鐘燈號閃爍兩次,這樣子是已經連結成功了嗎?
即使已經有連結成功,為什麼手機的app還是沒有顯示任何數據呢?
你好:
請觀察影片中藍牙連線的狀態,如果藍牙已和手機連線,藍牙的燈號不會閃爍。
如果未連線成功,請嘗試手機的藍牙功能重新開啟。
請問可以用手機裡的音樂傳給Arduino嗎?
Kane你好:
目前沒有用HC-05或HC-06做過,但是你可以在網路上搜尋”A2DP藍芽模組”,或是用raspberry pi來傳輸音樂
不過還是要看你的需求是甚麼?
您好,
請教一下,若我想將訊號從A0一個變成發送A0~A5六個訊號要怎麼做呢? 謝謝您
Chao你好:
A0~A5六個訊號分別接在六個可變電阻”中間”接腳,其餘兩側腳位接5V和GND即可
您好,
請問我如果想要把輸入訊號從一個可變電阻變成八個的話該怎麼做呢? 謝謝您
您好,應該無法一次傳八個值出去,可以依序傳送或組合之後傳送 http://blog.cavedu.com/2015/04/05/arduino-multidata-to-app/
我想請問手機連接上去之後textbox卻沒有顯示數值 而textbox欄位卻可以輸入數字 請問是甚麼問題
耀耀你好:
textbox沒有顯示數值有可能藍牙沒有連到手機,檢查看看TX、RX線有沒有接反。
另外,textbox是”輸入文字盒”,所以是可以輸入數字的。
老師你好
請問App Inventor 裡面的
wnen Clock1.timer
If
If
If get global text < 0 //請問這個判斷式可不可以省略呢?
then (get global text) = (get global text) +256
感謝老師分享課程 受益良多~
您好,Jia:
在電腦端,一個位元組的資料是0~255,但是當資料傳送到Arduino時,它卻會將128~255區間的資料誤判為-128~-1,為了要看原本的數值會加上256,
請詳見:https://www.slideshare.net/NissinAllelujahnissin/4-44394140 P41頁
請問碰撞感測器 能直接套用嗎
#include
SoftwareSerial I2CBT(10,11);
int Touch = A0;
byte serialA;
void setup() {
pinMode(Touch, INPUT);
Serial.begin(9600);
I2CBT.begin(9600);
}
void loop() {
int result = digitalRead(Touch);
Serial.print(“Touch: “);
I2CBT.print(“1″);
Serial.println(result);
delay(100);
byte Data[3];
byte cmmd[20];
int insize;
char str[256];
int i=analogRead(A0);//read sensor value
serialA=I2CBT.read();
Data[0]=’a’;
Data[1]=i/256;
Data[2]=i%256;
sprintf(str,”i: %d 0: %d 1: %d 2: %d”,i,Data[0],Data[1],Data[2]);
Serial.println(str);
if (serialA == 49){
for(int j=0;j<3;j++)
I2CBT.write(Data[j]);
serialA=0;
}
//delay(100);
}
目前想要 Arduino收到碰撞訊號 就傳給app
Zang你好:
無法全部套用喔,這篇是讓手機接收到從arduino A0腳位的類比訊號(數值0~1023),但是碰撞感測器的訊號是數位訊號(數值0或1),所以碰撞感測器的腳位不是接在A0,而是接到數位腳位D2~D13。
感測器偵測到訊號後,讓手機接收到一個”a”字元即可,所以在手機Appinventor裡程式也要修改。
想用textbox1和textbox2顯示兩種數值該如何修改?
葉昭宏,你好:
要到appinventor 設計的手機頁面在User Interface可以新增多個Textbox。再到左上角的Blocks可以設計程式數值顯示再多個Textbox。
老師你好 我想用按鈕的方式設定時間後倒數計時
並回傳給Arduino 進行給予時間內的輸出訊號
該怎麼做才好
您好,您的描述我不是太理解,app 端倒數計時然後要發送怎樣的資料給 Arduino 然後 Arduino 要做什麼?請詳述我才能幫忙喔
您好,我想詢問如果我要傳送到手機的單一數值範圍0~5000,傳到app inventor時值只在約-120~120之間跳 要如何修改?
您好,調整範圍之後再傳送就好啦,端看在哪一端運算而已
請問我arduino的串列序列埠能顯示電阻的大小,但app inventor無法收到arduino 傳的值,是我藍牙(hc-05)哪裡設定錯了嗎
是要設定成從端還是主端,藍牙的序列埠要設定多少呢
你好,jjason:
app inventor無法收到arduino 傳的值,有很多原因
接線部分:
藍牙RX – Arduino D11
藍牙TX – Arduino D10腳位
在注意一下,有沒有接反
藍牙設定部分:
藍牙設定成從端,並鮑率是否有設成9600,指令請參考:
https://blog.cavedu.com/2017/10/18/hc05-hc06/
最後我有遇到杜邦線老舊的情形,建議你可以用三用電表檢測一下