【开源】bug菌把"动态数字显示"开源了!
1、聊一聊
今天分享的歌曲名的意思是"只剩沉默",也许最可怕的莫过于沉默与冷漠。
本文分享的是SuperNumer控件的设计思路和历程,同时bug菌把开源demo地址放出来了,供大家学习参考。
2、设计初衷
该设计的初衷源于bug菌技术交流中的讨论,如下图:
这个采用点阵实现的电子时钟挺有意思的,于是群友们展开了一场激烈的讨论,当然bug菌也把自己的一些设计想法在群里面跟大家讨论了一下,不过估计很多小伙伴都听得懵懵的。
然而这种场面就好像当年bug菌拿着小板凳坐着听大佬吹牛一样的感受,其实挺莫名其妙的!
所以为了摆脱这种不好的感觉,bug菌决定把这个功能实现了,并且开源给大家
3、开发过程
开发到目前的第一版本大概经历了三个阶段:
当时的方案基本上就在和大家的交流和讨论过程中设计好了,如下图所示:
上图来看,每个数字的显示都是以段为基本单位来进行处理的,并且要实现多个数字扩展就需要以每个数字为单元进行封装。
这里举例以数字3变换到数字4的过程:
其他的数字变换大家可以根据视频里面的效果一一推导,不是特别困难,目前的第一版本程序也是为了实现相应特效定义了20种状态处理。
玩过嵌入式GUI的都有一种感觉,一款成熟的GUI一般都会有其PC端的模拟器,一方面可以实现软件和硬件的同步开发,另一方面在相应图形设计过程中更加高效便捷,其实计算机图形和嵌入式GUI本质都是一样的。
bug菌之前写过两篇关于GUI的文章,大家有时间可以看看:
方案准备好了,思路通了,就开始进行PC仿真,bug菌快马加鞭在第二天用讨论的方案实现了单个数字的特效显示,如下面的视频:
如果仅仅只是验证一下方案是否可行,其实上面的效果即可交作业了,不过bug菌还是想把这个电子时钟给实现一下,毕竟电子时钟还是一个比较普遍的实验Demo。
然而每天晚上下班回家才有时间倒腾一些自己的事情,白天基本上是交给公司了,所以花了大概2-3个晚上把这块代码进行了梳理,下面看一下PC模拟电子时钟的效果:
毕竟PC上仅仅是模拟,有些项目经常在PC上仿真没有问题,到了嵌入式平台上却漏洞百出。
所以bug菌最终还是想在嵌入式平台上看看效果怎样,这样的功能对于stm32还是没什么压力,刚好手头上也有一个OLED,于是很快找了一个OLED的驱动Demo,然后把PC模拟代码移植了进去,实验效果如下:
在bug菌实现中间的冒号:显示的时候,发现SuperNumber扩展性还是挺好的,大家可以看一下代码中这块的实现。
设计之初还考虑到如下特点:
可以自定义数字位置、宽度、长度;
能够更加简单且灵活的增加段特效来构建多种数字特效;
更好的扩展多个数字单元;
。。。。。。
目前第一版本bug菌已经发布到了码云平台上,这也是bug菌在该平台上发布的第一份开源代码,大家可以去下载源码进行参考学习实验。
开源地址 : https://gitee.com/thelastbug
如果无法下载也可以添加下方bug菌微信获得相应的工程文件:
4、最后小结
毕竟bug菌时间精力有限,目前的Demo版本还不是特别的完善,后续bug菌会持续提交和优化该项目和控件,包括时间的设置,调控等等功能的实现,大家也可以一起讨论交流,大家可以持续关注!
好了,这里是公众号:“最后一个bug”,一个为大家打造的技术知识提升基地。
推荐好文 点击蓝色字体即可跳转