3D8S 是基于 Arduino 平台的 8x8x8 LED 光立方显示模块,之前的介绍基本都基于串口通讯协议,从外部进行显示控制。本期介绍一下如何“脱机运行”,或者说“单机运行”,也就是在一块单片机上实现led的驱动和动画。题图就说明问题咯,3D8S 只通过串口线连接 USB 充电器,就能自己动起来。虽然这并不是我个人推荐的玩法,但相信很多朋友还是希望这么玩,而且确实也很多人这么问过。
我之所以不推荐这么玩,主要还是从显示效果的角度考虑,说来简单,因为点阵(8x8x8光立方的本质,就是64×8的平面点阵嘛)的动态扫描,而在每层的扫描中,都需要一定的延时。而在单线程的程序中,这段时间单片机是空转的,干等,而运算动画的时候,又没空扫描点阵。动画算法简单还好,如果比较复杂耗时的话,轻则影响显示亮度,重则显示闪烁。
吐槽归吐槽,但是要在一片单片机,一片arduino上实现点阵驱动和动画也不是很难的事情。而且实现和《ARDUINO 串口通讯玩转 8*8*8 光立方 3D8-S- 开源源程序》基本一样的动画,包括类似的动画调用方法,同一动画的三种坐标系下显示,也都可以实现。
而配合光立方,光立方的32K小卡,其本质就是一块 Arduino UNO,一样使用 ATmega328p 作为主芯片,通过板载的USB接口连接至PC,就可以通过 Arduino 开发环境对其下载程序。换句话说,其实它你能做的事情,不仅仅驱动光立方,可以当做一块完整的 Arduino UNO 来玩,是不是还小巧很多呀?
所有类库和代码,下载,解压至ADE的libraries(\arduino-1.0.1\libraries)目录下即可。如果之前有下载过之前的类库的话,可能需要先删除,毕竟这里Master板类库都包含了之前的2个例程。其中basic和advanced都是针对协议进行控制,而master的例子,就是本文提高的“脱机显示”。
类库的代码,相信对于玩点阵驱动、动画设计的朋友都有一点帮助吧,开源分享咯~ 虽然串口通讯的协议还没有公开,但是目前公开的代码里面已经可以包含了协议下位机90%的代码(只是少了串口通讯的部分),有兴趣的朋友可以在此基础上试试看,怎么通过串口与上位机再进行通讯。
类库使用 C++ 编码实现,里面文件虽然很多,但是包含了芯片的驱动代码以及动画逻辑库,各种对象的继承、托管,还是用到很多OO的设计方法。我的 C++ 其实就是通过 arduino 来学的么~
视频: