在BL808上画动态的玫瑰花

tobot   2023-2-8 07:07 楼主

情人节快要到了,BL808的收尾时间也差不多到了,不如用一个玫瑰花做收尾吧。创意来源于百度文库中的一篇文章:《JS代码实现玫瑰花》,不知道引用站外的链接是否违规,这里就不贴出链接了。总之,是使用了非常简单的几句代码就实现了一个玫瑰花的效果。首先把它移植到python中,看起来还不错。

Python的效果如下(应该是还没画完):

image-20230208070305-1.png  

 

在之前几篇介绍中,尝试在BL808的系统中做了画图工作,这一篇本质上没有新提升,只是修改了画在BL808屏幕上的图案样式。

首先做好准备工作:

1)比起展开式,嵌入式中的三角函数还是查表比较方便。因此做好一个0~pi/2的正弦函数数组,考虑到精度,采用的是200等分角(这个似乎是单片机里面的惯例)。

image-20230208070305-2.png  

再通过函数特性查表求值。

image-20230208070305-3.png  

sin是奇函数,所以可以直接用表示正负号,正号为1.0,负号为-1.0,cos的话,直接移动pi/2就可以了。这里还是浪费了一点资源,应该直接先写cos的,因为偶函数可以不用考虑正负号,直接取绝对值就行。

代码中所乘系数126.6873是使用199/(pi/2)算出来的。

2)把RGB888转换成RGB565。

RGB565的特点是16位长,分别用5、6、5来表示RGB的颜色,而通常RGB是各8位的,因此红色和蓝色的后3位,绿色的后2位都应直接舍弃(这里是舍去了,其实应该考虑根据1或者0决定是否进位),如同大多数理科男,我也是分不清后几位颜色的。

我们知道16位数字,写的时候是低位在前,高位在后,因此需要用算式转换如下:

image-20230208070305-4.png  

在屏幕上开始画点

39b789b223469a26d076df9eb15ed3d5

大概2~3小时后的效果如下:

image-20230208070305-5.png  

手机拍照的原因,实际显示还是红色的花,颜色和电脑中显示的差不多。

 

附上相关代码,预祝大家情人节,人成双。

python的:

draw_rose.py (3.39 KB)
(下载次数: 1, 2023-2-8 07:06 上传)

c(基于BL808)的:

draw_rose.zip (2.89 KB)
(下载次数: 1, 2023-2-8 07:07 上传)

回复评论 (7)

2~3小时???为什么这么久?

点赞  2023-2-8 13:06
引用: wangerxian 发表于 2023-2-8 13:06 2~3小时???为什么这么久?

从动画可以看到每秒实际上只能在画面增加10~20个点,再加上在后期很多点反复落到同一位置,要填充满玫瑰花的画面估计要几十万次吧。

点赞  2023-2-8 19:30

花费那么老长时间的动画诶哈哈~

点赞  2023-2-9 06:36
厉害啊,满满的不明觉厉的感觉,我要是会就好了!
点赞  2023-2-10 16:20
大概2~3小时后的效果如下。这是穿越吗,别吓坏了开发板。
点赞  2023-2-10 23:05

花需要耐心


点赞  2023-2-11 23:51

花开需要时间

点赞  2023-3-8 14:38
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复