本帖最后由 ntmusic 于 2013-9-7 11:10 编辑
首先,我没有自己做过光立方,所以在这里有点班门弄虎了
但是,虽然没有做过实物,但关于光立方的驱动我还是有一点点研究的
一个好的光立方驱动,不仅可以使程序严谨缜密,还可以开发出更炫的演示效果
但是我看过一些人的光立方程序,发现驱动部分做得实在有些粗糙(当然是个别吧)
以下就以8*8*8的光立方驱动谈谈我的看法吧
其实驱动这个8*8*8的光立方,我们要做一个空间上的转变。光立方看着是立体的,但我们可以把它展开成8*64的点阵屏来驱动
而驱动这个8*64的点阵,我们又可以像驱动旋转LED的驱动办法,一次驱动一列,扫描64列。
这样,整个8*8*8的光立方驱动就变成了旋转LED的驱动,而且这个旋转LED的分辨率仅有8*64点而已
我们在程序中开辟一个8位64元素的数组作为显存,每一个元素的值对应着扫描的每一列,每次扫描64列,并将对应列赋予显存数组对应元素的值 ,这样要在某一列显示什么内容,直接给缓存对应列赋值即可,这点相信大家都能理解吧
回到8*8*8点阵,把这个显存数组分成8部分来操作,就是驱动光立方了
由于驱动是连续的,我们可以实现更多效果,比如流动显示什么的,轻松实现。
这样,我们的一个驱动程序,可以用在旋转LED,LED点阵以及光立方上,基本不用怎么修改就通用,何乐而不为呢
以上是本人的一点点看法,仅作抛砖引玉,请大家指正,欢迎更多优秀算法
一个优秀的算法思路,价值更高于杂乱无章的源码。不知大家赞同与否
0