PTT推薦

Re: [器材] 使用Arduino製作烘豆機控制盒-Part3 LCD螢幕顯示

看板Coffee標題Re: [器材] 使用Arduino製作烘豆機控制盒-Part3 LCD螢幕顯示作者
plzza0dogs
(二兵 金 東 河 忠誠)
時間推噓 推:3 噓:3 →:4

LCD螢幕顯示
在LCD的選擇上,原本我是考慮LCD1602,但數了一下字數,似乎有點侷限
轉而考慮LCD2004,國外不少TC4的用家就是使用1602、2004來做為螢幕顯示

https://i.imgur.com/8ctMwzR.jpg

圖 使用Arduino製作烘豆機控制盒-Part3 LCD螢幕顯示

於是我用EXCEL對LCD2004排版之後如下
https://i.imgur.com/g7KIFO6.jpg
圖 使用Arduino製作烘豆機控制盒-Part3 LCD螢幕顯示
似乎還是很擁擠阿

因此到後來看到了128x64的ST7920後我就轉而投向這塊便宜又強大的面板了,顯示部分我使用U8G2函示庫來建立整個畫面的構成,U8G2是一個可玩性高、支援螢幕豐富的函示庫,就算要用中文顯示也能支援、自製字庫(儘管ST7920的函示庫本身也支援部分中文)

對於U8G2有興趣的可以參考下列幾篇文章,都有非常詳細的說明,利用文章裡教的一些函式慢慢堆疊出屬於自己風格的畫面
https://blog.jmaker.com.tw/u8g2-oled/
https://atceiling.blogspot.com/2020/12/arduino102u8g2.html
https://www.twblogs.net/a/5d207eeabd9eee1e5c83a6bb

不過很怪異的是,我在使用U8G2顯示中文卻失敗了,但是同樣的程式跑在SSD1306 OLED卻是可行的,不確定是出了什麼樣的問題,好在我本身就不考慮使用中文顯示,畢竟太佔空間了,而且讓人覺得不夠「有趣」,為了讓畫面更有「藝術氣息」,我使用圖形來代替爐溫、豆溫、風門、瓦斯
利用EXCEL「設計」之後,再到這個網站一個個點出要發亮的區域,就會出現圖片的陣列囉https://www.block.tw/t2b

https://i.imgur.com/c0mm9yQ.jpg

圖 使用Arduino製作烘豆機控制盒-Part3 LCD螢幕顯示

然而到後來我才知道,原來這些顯示的陣列,跟顯示出來後的畫面會左右相反,所以做好之後又手動一列列修改,才完成最後的圖標陣列,然後這裡也出現了另一個BUG,就是風車圖案不能放在太下面的位置,否則就會在他的正下方中央,出現一個亮點,非常詭異的BUG卻也無法解釋,反正只要不把風車放在最下方就可以了。
另外ST7920分為藍光白字,跟黃光黑字兩款,我買的是藍光白字,所以畫面要反黑,應該是這樣
https://i.imgur.com/mJAABce.jpg
圖 使用Arduino製作烘豆機控制盒-Part3 LCD螢幕顯示

測試一下顯示效果
https://i.imgur.com/5nserfC.jpg
圖 使用Arduino製作烘豆機控制盒-Part3 LCD螢幕顯示


在來回到軟體的部分,必須宣告你使用了哪一塊板子

U8G2_ST7920_128X64_F_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* CS=*/ 10, /* reset=*/ 8);

其中SW 好像是代表 軟體模擬SPI,這時候你可以自訂任意腳位,像我使用了44、42、46,reset不接,所以我的宣告是

U8G2_ST7920_128X64_F_SW_SPI u8g2(U8G2_R0, /* clock=E*/ 46, /* data=R/W*/ 44, /* CS=RS*/ 42, /* reset=*/ U8X8_PIN_NONE );

接下來只要在程式裡面宣告自己要使用的圖形陣列,利用u8g2的函式一個個繪畫出來就完成了,然後我會把不需要更新的部分(框架)放在u8g2.firstPage();需要更新的放在do{}while ( u8g2.nextPage() );之間,看起來很複雜沒有關係,其實只要把範例程式修改一番就可以創造自己的頁面了,排版的部分就是按計算機,計算一個字佔了幾個寬度,然後try and error,不斷的微調。

程式碼的部分
https://i.imgur.com/pMPF56G.jpg

圖 使用Arduino製作烘豆機控制盒-Part3 LCD螢幕顯示

最後改字形、加了各種框限排版出來的結果
https://i.imgur.com/qwUawef.png
圖 使用Arduino製作烘豆機控制盒-Part3 LCD螢幕顯示
當然最終都是不斷調整的,我打算把KENT500的字樣改成時間顯示,左側溫度改成ROR顯示、右側濕度是風門濕度,當然這些部分還沒做出來,不過就算做失敗也問題不大,畢竟這些花里胡俏的東西其實用處不大只是為了填補面板,不然Artisan都是有這些資訊的顯示的。

另外為了讓螢幕面板不要更新頻繁,造成數值不斷浮動顯示,我依樣使用millis()進行控制 if(lcd_time==0)
lcd_time=millis();
if( (millis()-lcd_time)>500){
/*u8g2的程式碼*/ }
lcd_time==0;
這樣一來螢幕就會一秒更新一次顯示內容,比較不會讓人眼花撩亂

另外原本我還打算加入MP3語音模組進行溫度的播報,不過買了兩顆MP3模組,一顆燒壞,一顆本身就是壞的,上網詢問後大家評價這塊模組很容易故障、焊接錯誤,所以最後就乾脆不做這個部分的功能了,當然這些小功能製作並不困難,有興趣的可以自行搜尋Arduino、MP3,利用if-else或switch這些簡單的判斷函式就能做出語音播報系統了。

基本上軟體的部分就到這裡告一段落,之後會開始講關於硬體製作與規劃的過程
-----待續-----

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.201.15 (臺灣)
PTT 網址
※ 編輯: plzza0dogs (111.248.201.15 臺灣), 11/14/2021 11:43:30

celtics199711/14 11:42豪猛

plzza0dogs11/14 11:52胡先生別再無意義噓了,趕快去還錢吧 拿PTT ID去借錢

plzza0dogs11/14 11:52網借錢這種操作也難怪你就這樣了

celtics199711/14 11:54$

kazzoi11/14 16:42所以到底在虛啥

他在邊緣人版針對某人瘋狂亂噓文貼一堆莫名其妙的東西,就同時被3、4個人檢舉 我是其中一個,從此只要我發文他就在下面亂噓一通,精神狀況很不好吧,惹到他的都會被他無意義瘋狂追殺 還跑去借錢網貼自己個資跟PTT ID用來"擔保"自己不會欠錢不還(原來PTT ID這麼有用?) 總之這個人怪怪的,有點可憐

celtics199711/14 16:51秘密

※ 編輯: plzza0dogs (111.248.201.15 臺灣), 11/14/2021 17:28:12

mangobearx11/15 08:03幫推

bearq25811/15 11:21直接用TC4或PID 台達電DTA 改一下接artisan 也可直接控

xhung11/17 17:27哇塞 自己動手做烘豆機 佩服

asd5644501/24 23:10推推精神