OLED常見用於當做7697的顯示模組,BlocklyDuino內部的積木提供不少OLED的函式積木,但對於圖檔的支援相當的少,於是我設計了讓OLED顯示圖案的功能,除了可解決OLED不能顯示中文的冏境(應該是可以顯示,待以後再行增加中文支援),還可以透過MQTT動態更換OLED顯示的圖檔,讓OLED有更多樣的表現,除此之外,還增加了一些控制積木,也在修正了一些原有積木的錯誤函數指示。
因為這個功能,新增加了一些Library,並且有對這些Library進行修改,雖然吉哥積木會自動更新積木,但是Library不會自動更新,因此,之前有安裝過吉哥積木的人,務必要從這裡手動更新積木,才能夠正常的運作,請更新到20200815的版本,吉哥積木的安裝請參考:「如何安裝吉哥積木」 。新的OLED積木放在「Modules」下的「OLED 128*64」選單內。
1.首先在任何一個繪圖軟體,開啟一個128*64大小的畫布,只用黑色及白色作畫,將需要的圖案及文字繪製好,存成BMP格式的檔案。
2.到以下網站將你的BMP檔案拖曳上傳後,這個網站會將你的副檔名為.bmp格式的檔案,轉成為.xbm格式的文字檔。
轉換格式網站:https://onlineconvertfree.com/convert-format/bmp-to-xbm/
2.上傳後點選「convert」按鈕。
3.轉換成xbm格式後,便可以將它下載下來
4.請用記事本將它打開,並將頭尾不需要的東西去掉
5.為節省開發板的記憶體,以及動態傳圖時發生緩衝區不足的情況,我們還需要將這個文字檔瘦身,沒有瘦身的文字串,在MQTT動態傳送圖檔時,會被忽略掉,請用記事本「取代」的功能,將「半型空白」以及「0x」這些東西取代掉,變成以下的文字串,這些文字串就是我們動態顯示圖案所需要的東西,請將它整個複製下來,接下來我們就可以進入BlocklyDuino,讓OLED顯示圖案了。
只顯示單一圖檔,將圖檔轉換成XBM格式的文字字串後,便能將這些字串指定給「從XBM字串顯示自訂圖案」 這個積木來顯示圖案到OLED。
以下的例子,共有三個圖案,將三個字串放進字串陣列中,利用字串陣列,每5秒鐘會輪流換一次圖案。
OLED無法顯示中文,於是先用繪圖軟體將需要的中文先在軟體中繪圖出來,轉換成XBM格式後,搭配查詢各機關學校空氣盒子的功能,便能將中文以及空氣盒子的偵測值一起顯示出來。對空氣盒子不了解的,請先參閱這篇:「零時空汙空氣盒子」。
以下的範例,每五秒鐘會去輪流查詢二個不同的學校,並顯示出查詢結果。
執行後的結果:
在MQTT訂閱一個Topic,當這個Topic收到訂閱的訊息時,便將接收到的訊息當做自訂圖案顯示出來。
用瀏覽器在http://www.hivemq.com/demos/websocket-client/,訂閱相同的Topic並且將轉換成XBM字串的訊息發佈出去。
所有訂閱相同Topic的裝置,收到訊息後,便能在自己的OLED上顯示圖檔了。