###### tags: `Arduino` # Mbot濃縮講義 ## 前置安裝 Arduino去官網載1.8.19(win 7 and newer),其他資料在 https://github.com/Harrysome/2023-NTNU-EEcamp 下載解壓縮後把擴充函式庫(Makeblock-Libraries-master)丟進去 開啟EEcamp裡的車車原廠程式碼,上傳成功的話應該開電時會叫三聲 ## APP inventor - 到官網按creat,然後註冊(一路確定按到底),建立新專案(**檔名不要設中文或數字**)(網頁語言自己改(在右上角)) - 左邊最下面有"擴充套件",進去,選URL然後貼上網址(網址在github上) - 把**Mbot**和**藍芽客戶端(在"通訊"裡)** 先拉進手機裡 - 依序把按鍵,標籤,滑桿丟進手機,記得要用**水平配置**或是**表格配置**,不然你永遠無法把物件並排 - 到程式設計開始拉方塊 - 依照按鈕的功能下手 - connect/disconnect - 滑桿/標籤 - RGB輸入 - 上下左右鍵 - setRGB/resetRGB - **確定權限設定的方塊有拉出來** - 可用APK打包並下載,或是用AI companion APP連線測試 - 和車車配對請貼著車車,防止連到別人的車或是連線不到 - 若有多時間會教如何再新增按鈕來撥放音樂或設計不同的APP介面來控車 ### Debug - 車子連不到請**確定你有開電**,在不然就車子接電腦充電一下在試,連線請手機貼著車子,不要連到別人的 - 真的連不到請找講師或生機股更換車車 - 沒安卓手機請找生機借公用的,或是學員共用,或麻煩隊輔借一下手機使用 - 按鈕按了沒反應,請確定你的按鈕有接上方塊,或是馬達數值是否有放錯 - 滑桿數值的標籤記得要連動滑桿的指針位置進行變更 ## Arduino程式結構 - 引入函式庫,物件設定 - setup 只進行一次的動作或設定 - loop 無限迴圈 - 副程式 ## 序列(Serial) ### 函數 ```cpp= Serial.begin(9600) //一定要打在setup裡,鮑率記得要和視窗一樣 Serial.print(你要的東西) Serial.available() //放在if裡判斷是否有資料進來 Serial.read(); //讀取輸入的字元 delay(毫秒數); ``` ## 馬達 ```cpp= #include <MeMCore.h> MeDCMotor motorL(M1); //馬達不要接反 MeDCMotor motorR(M2); motorL.run(數值); //數值介在-255~255 motorR.run(數值); motorL.stop(); motorR.stop(); ``` ## if else/ switch 上過程式設計的各位應該都會(~~除非你被當~~),注意判斷的等號要兩個,Serial.available()自己就能當條件,switch的break記得要打,讀取的值只能訂成字元(除非學員自己會就讓他去玩) ## 副程式和序列控制 注意Stop(int s)是大寫S,其他就確定學員有打完四個方向,速度用100~150就差不多 ## RGB LED ~~不會用for和while的去面壁~~ for裡的i是區域變數,出了for就不能用 led設定記得腳位是7,led個數是2 要設兩個led用0,要設定左或右用1/2 ## 超音波 & 紅外線 ```cpp= MeUltrasonicSensor ultraSensor(PORT_3); MeLineFollower lineFinder(PORT_2); int dis = ultraSensor.distanceCm(); //距離讀取 int num = lineFinder.readSensors(); //路線情況讀取 ``` 超音波的讀取範圍在3~400,盡量找平的反射面讀取比較容易 紅外線讀到白色是1黑色是0,用2進位組合就是0123,再組合馬達移動就能做出循跡車 # Arduino debug 方法 ## 遇到亂碼 - 重開幾次序列視窗,同時確定鮑率是對的(也要確定begin(9600)有設定) - 重新上傳 - 重開IDE - 確定序列埠有選對,確定Mbot有開,再不然就重新插拔 ## 編譯錯誤(exit 1) - 確定序列埠有選對,確定Mbot有開,再不然就重新插拔 - 若不確定序列,對windows按右鍵(或按win+X)>>裝置管理員>>連接埠(COM和LPT),插拔Mbot看看哪個東西會變 - 若電腦不能判讀(電腦太老),EEcamp資料夾有CH341SER的安裝檔,執行然後按install,成功後再去裝置管理員確定是否安裝成功 ## 函式不存在、變數未定義、expected 'something' ~~再不聽課阿~~ - 到草稿碼>>匯入程式庫>>加入zip程式庫,把在EEcamp資料夾裡的master壓縮檔丟進去 - 確定你的函式英文沒拼錯字 - 注意是否全域變數定成區域變數,或是根本沒有宣告 - 確定分號、括號都有打對 - 確定空格沒有打到全形(這很麻煩) ## 馬達不會動 - 確定馬達的螺絲有鎖好 - 可能電池沒電,要充一下電 - 馬達數值調太小(盡量界於100或-100之間) - 重新插拔馬達的線 ## 馬達方向 - 確定M1和M2有沒有插反(左M1右M2) - 注意如果是要設前進,兩個馬達應該數值要相反 - 出現只設一邊但兩邊都會移動,去找生機或講師換車 ## 超音波模組異常 - 確定PORT和模組接的線是一樣的數字 - loop裡加個delay(10)或(100) ## 紅外線異常 - 條件判讀是直接用0123,不能用二進制 - 黑色或暗色物體是0,白色或淺色物體是1,確定循跡路線的顏色夠分明 # REF [Arduino 簡說](/IogUDGJiRo-LvgfM73XVnA) [Arduino 程式架構及語法](/uh_UWZRaRNeGPiV-3_4Fxg) [Arduino(C++)基礎語法](/Juvtj4mqSP6qLHP_94F7Zg)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up