本週開始將 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++。
Chat Everywhere v2 超級好用!
-
這是利用 Chat Everywhere V2 所生成的探奇工作室 行銷文章:
【讓孩子的未來更有「智」!🤖✨】
家中有小學到大學的孩子嗎?每天為了學習煩惱嗎?別擔心,專業機器人教育課程來拯救您的家庭教育時光!🎉
🌟 課程亮點:
- 學習不再枯燥:透過機器人實作,孩子在玩中學,愛上學習!
...
19 小時前
Good job. 我先偷跑,改好 C++了。☺
回覆刪除辛苦了,我這邊也將 #* 功能加入了,因為可以執行串聯指令,所以加入 Pipe 處理,另外新增 GOSUB 可以執行副程式,因此有 Stack 處理。
刪除