|
|
寫了一個簡單 OLED 12864 的庫, 本想分享出來.
一直使用 Sublime Text 2 開發, 在最後測試時, 考慮到用家可能是用 arduino 的 IDE, 所以嘗試在 arduino IDE 上再測試一次.
結果很奇怪的, 分拆出來的部份, 都出了 " multiple definition" 的錯誤.
我再三檢查了, 絕不可能有重複的, 甚至嘗試加入一些檢測 (#ifdef _xxx_ 再 #define _xxx_ 之類, 避免同一段程式 compile 再次 compile),
結果也是一樣.
但同樣的程式, 在 Sublime Text 2 之下, 是完全沒有問題, 可以正常 compile 並 upload 到 arduino 板上執行的.
以下是之前測試時的片段 (只少了 testMsg 一部份), 同一個程式在不同 Arduino 板 (Nano 及 UNO) 及 不同顯示晶片 (SSD1306 及 SH1106) 中執行也是沒有問題的.
但在不同的 IDE 下出現了不同的結果.
現在有點苦惱, 發出來不可能要求別人也用 Sublime Text 吧.
雖然簡單一點, 合成一個 cpp 就可以了, 但自己也想攪清楚問題所在.
想請教一下, 在寫庫的時候, 把部份程式分拆成幾個 file, 應如何加進來?
以下是我的程式(還在後期 tuning 中, 但執行是沒問題的), 希望大神可幫幫忙, 為何在 Sublime Text 中一切正常的程式, 在 Arduino IDE 中會出問題.
有興趣的朋友可以嘗試 verify 庫中的範例 OLED12864_Tester.ino.
如果有 OLED 0.96 或 1.3 i2c 板的朋友, 可以直接執行.
原設定是 0.96 吋(SSD1306 i2c)的, 把 13 行的 OLED_1306i2c 改成 OLED_1106i2c, 即 OLED12864 myOLED(OLED_1106i2c, true); 就可以在 1.3 吋的OLED 執行了.
非 i2c 的版本還在編寫中, 正考慮用不同的 class , 還是像現在的在執行時用變數決定晶片, 另一個方式比較好.
如果沒有 OLED 板子的朋友, 也可以嘗 Sublime Text 2 及 Arduino IDE 試單獨 verify/compile , 也可以看到分別.
謝謝大家幫忙. |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|