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