发现有消息未读,打开发现原来是这个帖子,进来再看了一下,似乎是大致看明白了楼主意思
1楼 描述了如果LED是M行N列,刷新率L,亮度分成K个等级,则一秒钟进行N*L次列扫描,每个扫描间隔再将定时器分裂成K次,修改行数据,让行在每次列扫描时间内按K等分算导通时间,
中规中矩的基本扫描知识很容易理解
2楼 给出具体实例 90个灯为了减少扫描次数做成3*30,刷新率60,亮度级别30。计算出要用33个IO,中断频率60*3*30=5.4K,用增加IO降低扫描频率,33个。。。
再给出LED描述结构,前后链接号,自身ID,目标亮度值,当前亮度值,4+4+1+1+1=11字节,90个灯要用牛X的90*11字节。
再就是基本中断伪代码 外循环是3列扫描,内循环是30次亮度判断。0点亮灯,亮度几就到几关灯,似乎是每次亮度判断都要将30个灯遍历一次(前后链接号何用?按亮度排序似乎不成,变亮度要重新排序)
最后留下真正要说的变亮度的悬念下回分解。
3楼 似乎是先占楼再码字,但是铺垫完了不见猪脚登台,楼是占了,说好的亮度变化呢
5楼 版主出现加精
7楼 一加精忘了3楼的坑 已经得出结论,实现了亮度变化,给出功能,接口,资源占用,结论是这东东很好很强大
一片标准的毕业论文范例出来了,给出标题,描述基本情况,要实现的目标,做个开头,笔锋一转贴出效果图,结论这东东已经先进水平。编辑推荐不知道怎么推荐的,先把3楼补上再说啊,呵呵。。。
16楼 这个控制方法的目标是让所有led实现非同步的呼吸灯效果,各种图标,数码管,按键灯等都能根据需要自由的进行闪烁,亮灭,缓变。
是否就是任意LED可以同时各自速率,周期变化亮度?例如
LED2 在 1秒到 8秒从亮度3 变化到亮度21
LED88在 2秒到 7秒从亮度27变化到亮度11
LED53在 4秒到11秒从亮度22变化到亮度9
LED31在 3秒 从亮度25跳变到亮度15
A点坐标D1 B点坐标D2,间距S=D2-D1 要求T时间到达 则V=S/T, 要求V速度到达 则T=S/V 如果一大堆AB点也就一大堆S,各自独立就会有一大堆VT,如果统一速度或者统一时间就变的很简单了。
目标亮度和当前亮度差也就是算距离,如果就你上面2楼东西不再添加,我太笨似乎想不出如何做到所有LED各自按速率和周期改变亮度,
从这个LED_changeLightness(u8 ledid, u8 targetLightness, bool is_immd )看,似乎是编号,目标亮度,是否瞬变
变化速度恒定(比如,0.5秒从全黑到最亮) 应该就是V固定,不管V还是T固定都一回事,每一轮列扫描按照速度向目标亮度方向步进当前亮度
7楼,变化速度可调的实现方法还没想过。
各自任意变化,按S=VT显然只能再加一个数组,每个灯配置一个自己独立的V.
14楼 要不要这样玩,是需求决定的和资源、技术没太大关系
21楼 我所讲的就是一种在特定需求下的驱动方法
反复强调特定需求实在没看出什么特殊需求引出这么个费时费力折腾**。
如果我的理解是对的,对楼主辛苦码了这么多楼只能呵呵。。。没一点可取之处。
@le062 @dirtwillfly |