本週開始將 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++。
新ubuntu2404,新尹倉1120
-
Ubuntu24.04
每次ubuntu系統出新版本,我的更新都是滯後的。最新的ubuntu2404.iso已經超過6G,估計是因為加入了大量中文字體致使體積大增。我十多年來一直當作系統盤的4個G的U盤再也裝不下了,最終我決定把一個32G的U盤當系統安裝盤。
昨晚研究了multibootUSB好久,最終引導不...
1 天前
Good job. 我先偷跑,改好 C++了。☺
回覆刪除辛苦了,我這邊也將 #* 功能加入了,因為可以執行串聯指令,所以加入 Pipe 處理,另外新增 GOSUB 可以執行副程式,因此有 Stack 處理。
刪除