[macro|Java] 3D8S光立方 + TF卡(视频)

3D8S光立方终于又迎来新一轮扩展——TF卡模块。好不容易跨过硬件制作的坎儿,动画的设计又是一大难题。有程序基础的,自然会想着说通过算法实现一些效果(我也是一直这么引导的),而实力偏硬件的朋友,可能就需要一些取模软件,使用位图数组的方法,来实现一些动画。而这里TF卡的扩展,就是为了方便这些朋友。

在介绍软件之前,先介绍原理。TF卡扩展是针对M8小卡的,在原先就插好M8小卡的3D8的扩展接口上,可以插上我们的TF卡扩展卡。而扩展卡和M8小卡之间的通讯,依然是基于我们的通讯协议,详情见这里:《3D8S串口通讯协议的扩展》,协议的主要扩展就包括了,坐标系的变换、亮度以及附属LED的控制。而这些都对动画“帧”的进一步封装提供了必要的基础。再此基础上,再加上各帧动画的时长(程序上通过延时实现),就可以完整表达动画播放所需要的数据。

TF卡扩展模块也正式这么作的。一个动画文件(dat)由数个帧数据段顺序连接构成,每个帧数据段为72个字节,设为data[72],则

data[0]:头,必须为0xf2;
data[1]:坐标系,取值范围[0x00-0x02],依次对应XYZ/YZX/ZXY三种坐标系。
data[2]:亮度,取值范围[0x00-0xff];
data[3]:附件,取值范围[0x00-0x03],上层LED对应该字节第0位,下层LED对应第1位;
data[3,4]:主延时,单位约为毫秒ms;
data[6,7]:副延时,单位约为微妙us;
data[8-71]:显示数据,对应8x8x8光立方的完整显示。

注:因为每次动画数据的传输都包含对TF卡读取,发送串口数据等一系列操作,这些都会占用一定的时间,所以主副延时是在此基础上额外再占用的延时,并不准确。而且微秒对于AVR单片机来说,也就是个理论概念,很难精确的控制,别用太小的参数去难为它。

 photo 3d8_tf__zps1d2e959b.png

一个动画文件,就包括这样数个72字节以二进制数据的形式串联在一起。动画文件的格式就是这样,所以要生成动画,不一定非要通过我现在写的这个动画生成程序,目前这个程序还处于比较粗糙的阶段。同样,会编程的朋友,依然可以通过算法来生成这些数据,不用用鼠标来回点。

在Animation Generator程序中,主界面图形部分,依然是光立方的三视图,从上到下依次对应“从前往后看”,“从左往右看”,“从上往下看”依次看到的各层8×8点阵。不太熟悉的朋友,可以参阅《[Macro]3D8-2012 上位机程序大升级~》

顶栏中,包括常见的:新建、打开、保存、另存为、退出;以及帧操作:添加、插入、更新、删除。
左侧工具栏中,从上往下依次为:全局操作、X/Y/Z三轴方向的平移,反相以及平移是否循环的选择。

X/Y/Z三轴正负方向的平移之中方向的定义,以当前坐标系的设置为准。

【3】/【2】/【1】/【0】指的是,以z轴方向,xoy对称中心为中心的柱面旋转,包括顺时针和逆时针,用以生成一些“旋转”的效果。

在下方的工具栏中,左边的文本框中为当前帧数据端的完整文本表达,右边则可以对当前帧的坐标系、亮度、附件、延时等都进行相应的选择。这些选择都会直接反应到文本框的文本中,而通过手动编辑文本框的内容,也能对各项参数进行直接的修改。

窗体右侧是个列表框,当前的打开的dat文件,会以序号顺序形成列表,通过添加、插入、更新、删除等操作,对整体动画文件进行编辑。

因为在dat文件本身并没有包含这些序号数据,所以插入一段新的帧数据段不会对其它帧有什么影响。而两个格式规范的dat文件,也可以直接连接在一起成为一个更大的dat文件。

这个动画生成程序,是我写的第一个java窗口程序,控件用的也是最基本的swing,算是学java的书都会提到的那种。较之C#的教材,好在java的教材方面,更多侧重在Java语言特性,作UI只是辅助内容,而C#的感觉却恰恰相反。会使用java开发新的窗口程序,一方面很重要的原因也在于其跨平台的特点,其实全程都在ubuntu上开发,而编译后的文件,无论在linux或是windows上都能通过jre执行,也算个一举两得。

Oracle jre: https://www.java.com/en/download/index.jsp
代码托管地址:https://github.com/aguegu/DotMatrixJava
3D8 TF卡扩展模块:http://item.taobao.com/item.htm?id=17631742504

有文件自然方便的动画的分享和传播,希望能看到越来越多的朋友,分享自己编辑的3D8动画哦~

Ubuntu屏幕录制,使用的是kazam,本地播放的效果很多,不知道为什么优酷二次转码以后画质非常差。同样视频的Youtube链接:http://youtu.be/s1uE12blZIQ,尽量选择清晰的效果吧,毕竟原始的分辨率就是1366×768。

特别感谢:圣源电子

关于aGuegu

阿古 真名:官微宏,技术Geek,玩Arduino,玩Linux,爱Google,爱开源;现居福州
此条目发表在3D8 光立方, Java分类目录,贴了, , , , , , 标签。将固定链接加入收藏夹。
  • kob

    I try to connect 3DS Alp. with computer but can’t connect
    How to do ? Please ,help me
    Thanks ,

    • I wonder the serial-to-usb driver has been setup correctly. A new COMx device should appear when pluged it. The chip on 3D8 is CH340, wish you could find proper driver.

  • kob

    why first row have light but second row not have light and third row have light ?

    • it depends. mainly soldering problem

      • kob

        why Anode turn on the power hole not fully ?

        how to sent pics. to you for see it ?

        help me please ,

        thank you

        • I can’t see it. You may tweet it and @aguegu to inform me.

  • 张海波

    你好,怎么可以和你合作做3d led cube的软件?

    我想继续做大矩阵系列!

  • Tomek

    The java program doesn’t work for me. It says it cannot run a main file (main class:aguegu.dotmatrix.dotmatrixtest.program)… could you help me?

  • Skoal

    Can anyone walk me through each step to make an animation & then how to transfer it to my sd card? Thanks