本週開始將 SoftwareSerial 加入 ROSA,我先把它當作程式除錯使用,用它列印一些系統狀態,以方便了解程式執行到甚麼地方,不過並不太成功,今天留個紀錄,給有興趣的朋友參考。
原先我使用 Arduino IDE 1.6.3,在單一 ino 檔 #include <SoftwareSerial> 是 OK 的,不過現在程式拆成好幾個 cpp 後,想加入 SoftwareSerial,編譯程式總是回應找不到 SoftwareSerial.h 或是 SoftwareSerial.cpp,個人研判是系統編譯路徑出問題,之前 IDE 是 ZIP 下載沒安裝,因此改採安裝 IDE 1.6.8 才解決這問題。
現在藍牙是可以用,
雖然使用 C++ 的字串函式處理比較方便,不過程式編譯後執行會產生許多不預期狀況,根據以前經驗研判,因字串長度會變化,RAM 區內容常搬來搬去,有時內容可以透過藍牙傳出,程式改一下又傳不出來,可能與編譯器對程式記憶體配置有關,由於這部分超乎個人能力無法除錯,所以,我決定下週要重寫改碼,字串以字元陣列記憶定址方式處理,看似會多花時間寫程式庫,但是系統是能夠正常穩定的。
此外,也與 Daniel 討論,他是說 C++ 方式應該不會影響程式運作的時序,有沒有可能使用 SoftwareSerial 的 pin 的 Timer 中斷和其它共用導致,有建議將 Servo 運作抽離 loop(), 改用 Timer 1 中斷統一運作。關於此點,我的看法是 Servo 已經完全無使用任何 Timer 中斷,也無佔用 PWM,因此不會對 SoftwareSerial 造成任何影響,我對中斷的看法是,對控制時序有極度需求精準的東西,才會使用中斷,否則留下這些資源給其它程式庫使用。未來是不排除使用中斷來控制 Servo,不過這也要等系統比較穩定後再改良。
最後結論是,我先以 C 架構 SoftwareSerial 通訊系統,Daniel 有空再將它修成 C++。
整理mBot的注意事項
-
今天一整天幫忙整理別人的mBot,
需要整理整頓,就當作是做公益。
需要注意的事項如下:
1. 電子零件:主機韌體更新
2. 連線:USB、2.4G
3. 按鈕、LED燈、蜂鳴器
4. 超音波、循線(藍燈)、光線感應器
5. 輪胎(胎皮清潔、輪軸固定)、球輪、馬達(固定螺絲)、車架(折損)
...
8 小時前
Good job. 我先偷跑,改好 C++了。☺
回覆刪除辛苦了,我這邊也將 #* 功能加入了,因為可以執行串聯指令,所以加入 Pipe 處理,另外新增 GOSUB 可以執行副程式,因此有 Stack 處理。
刪除