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

作者: plzza0dogs (披薩貓的狗)   2021-11-14 11:36:21
LCD螢幕顯示
在LCD的選擇上,原本我是考慮LCD1602,但數了一下字數,似乎有點侷限
轉而考慮LCD2004,國外不少TC4的用家就是使用1602、2004來做為螢幕顯示
https://i.imgur.com/8ctMwzR.jpg
於是我用EXCEL對LCD2004排版之後如下
https://i.imgur.com/g7KIFO6.jpg
似乎還是很擁擠阿
因此到後來看到了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
然而到後來我才知道,原來這些顯示的陣列,跟顯示出來後的畫面會左右相反,所以做好之後又手動一列列修改,才完成最後的圖標陣列,然後這裡也出現了另一個BUG,就是風車圖案不能放在太下面的位置,否則就會在他的正下方中央,出現一個亮點,非常詭異的BUG卻也無法解釋,反正只要不把風車放在最下方就可以了。
另外ST7920分為藍光白字,跟黃光黑字兩款,我買的是藍光白字,所以畫面要反黑,應該是這樣
https://i.imgur.com/mJAABce.jpg
測試一下顯示效果
https://i.imgur.com/5nserfC.jpg
在來回到軟體的部分,必須宣告你使用了哪一塊板子
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
最後改字形、加了各種框限排版出來的結果
https://i.imgur.com/qwUawef.png
當然最終都是不斷調整的,我打算把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這些簡單的判斷函式就能做出語音播報系統了。
基本上軟體的部分就到這裡告一段落,之後會開始講關於硬體製作與規劃的過程
作者: celtics1997 (山東之龍-禁邪賽鴿)   2021-11-14 11:42:00
豪猛
作者: plzza0dogs (披薩貓的狗)   2021-11-14 11:52:00
胡先生別再無意義噓了,趕快去還錢吧 拿PTT ID去借錢網借錢這種操作也難怪你就這樣了
作者: celtics1997 (山東之龍-禁邪賽鴿)   2021-11-14 11:54:00
$
作者: kazzoi (卡ZO)   2021-11-14 16:42:00
所以到底在虛啥
作者: celtics1997 (山東之龍-禁邪賽鴿)   2021-11-14 16:51:00
秘密
作者: mangobearx ( Mangobear)   2021-11-15 08:03:00
幫推
作者: bearq258 (bearQ)   2021-11-15 11:21:00
直接用TC4或PID 台達電DTA 改一下接artisan 也可直接控
作者: xhung (xhung)   2021-11-17 17:27:00
哇塞 自己動手做烘豆機 佩服

Links booklink

Contact Us: admin [ a t ] ucptt.com