查看原文
其他

【开源】bug菌把"动态数字显示"开源了!

bug菌 最后一个bug 2022-07-15

1、聊一聊


    今天分享的歌曲名的意思是"只剩沉默",也许最可怕的莫过于沉默与冷漠。


    本文分享的是SuperNumer控件的设计思路和历程,同时bug菌把开源demo地址放出来了,供大家学习参考。



2、设计初衷

    

    该设计的初衷源于bug菌技术交流中的讨论,如下图:



    这个采用点阵实现的电子时钟挺有意思的,于是群友们展开了一场激烈的讨论,当然bug菌也把自己的一些设计想法在群里面跟大家讨论了一下,不过估计很多小伙伴都听得懵懵的。


    然而这种场面就好像当年bug菌拿着小板凳坐着听大佬吹牛一样的感受,其实挺莫名其妙的!


    所以为了摆脱这种不好的感觉,bug菌决定把这个功能实现了,并且开源给大家


3、开发过程

    开发到目前的第一版本大概经历了三个阶段:


 01 方案验证


    当时的方案基本上就在和大家的交流和讨论过程中设计好了,如下图所示:



    上图来看,每个数字的显示都是以段为基本单位来进行处理的,并且要实现多个数字扩展就需要以每个数字为单元进行封装。


    这里举例以数字3变换到数字4的过程:



    其他的数字变换大家可以根据视频里面的效果一一推导,不是特别困难,目前的第一版本程序也是为了实现相应特效定义了20种状态处理。



 02 方案PC实现


    玩过嵌入式GUI的都有一种感觉,一款成熟的GUI一般都会有其PC端的模拟器,一方面可以实现软件和硬件的同步开发,另一方面在相应图形设计过程中更加高效便捷,其实计算机图形和嵌入式GUI本质都是一样的。

    

    bug菌之前写过两篇关于GUI的文章,大家有时间可以看看:

【典藏】自制小型GUI界面框架(设计思想篇)

GUI必备知识之“告别”乱码(浅显易懂)


    方案准备好了,思路通了,就开始进行PC仿真,bug菌快马加鞭在第二天用讨论的方案实现了单个数字的特效显示,如下面的视频:



 03 PC模拟电子时钟


    如果仅仅只是验证一下方案是否可行,其实上面的效果即可交作业了,不过bug菌还是想把这个电子时钟给实现一下,毕竟电子时钟还是一个比较普遍的实验Demo。


    然而每天晚上下班回家才有时间倒腾一些自己的事情,白天基本上是交给公司了,所以花了大概2-3个晚上把这块代码进行了梳理,下面看一下PC模拟电子时钟的效果:



 04 OLED电子时钟


    毕竟PC上仅仅是模拟,有些项目经常在PC上仿真没有问题,到了嵌入式平台上却漏洞百出。


    所以bug菌最终还是想在嵌入式平台上看看效果怎样,这样的功能对于stm32还是没什么压力,刚好手头上也有一个OLED,于是很快找了一个OLED的驱动Demo,然后把PC模拟代码移植了进去,实验效果如下:




 05 SuperNumber特点


    在bug菌实现中间的冒号:显示的时候,发现SuperNumber扩展性还是挺好的,大家可以看一下代码中这块的实现。


    设计之初还考虑到如下特点:

  •  可以自定义数字位置、宽度、长度;

  •  能够更加简单且灵活的增加段特效来构建多种数字特效;

  •  更好的扩展多个数字单元;

  • 。。。。。。


    目前第一版本bug菌已经发布到了码云平台上,这也是bug菌在该平台上发布的第一份开源代码,大家可以去下载源码进行参考学习实验。


开源地址 : https://gitee.com/thelastbug



    如果无法下载也可以添加下方bug菌微信获得相应的工程文件

4、最后小结

    毕竟bug菌时间精力有限,目前的Demo版本还不是特别的完善,后续bug菌会持续提交和优化该项目和控件,包括时间的设置,调控等等功能的实现,大家也可以一起讨论交流,大家可以持续关注!


    好了,这里是公众号:“最后一个bug”,一个为大家打造的技术知识提升基地。

推荐好文  点击蓝色字体即可跳转

【收藏】【看门狗软件设计】"喂狗"真那么简单吗?

【嵌入式】bug粉碎机之volatile的那些坑

【MCU】用stm32的UID给固件加密(重点在加密)

【硬核C进阶】如何实现 万能 "两数交换" 宏 ?

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存