8x8x8光立方上位机实时控制、脱机控制的实现!SD/TF卡读写、24C256读写、EEPROM读写!
上位机软件下载 - 百度云盘下载地址:光立方V2.3
1、实时控制
实时控制之前的帖子(全新发布光立方上位机软件,开源程序,不用写程序也可以做光立方动画!!!)已经介绍,帖子中的视频,也演示了软件实时控制光立方的效果,这里就不多说了!
2、脱机控制(不是通过算法实现,通过读取储存数据,来控制光立方显示。)
提示:方法1、2,脱机要完美实现,需要用到2个UNO控制板,如果只使用一个控制板,"由于芯片处理能力问题" - 个人判断,会出现闪烁情况!方法3,虽然可以完美脱机,但EEPROM空间有限,不足以储存大量的数据。
以下程序默认连接:
arduino 连接光立方:
D6 --- RCK D7 --- SCK
D5 --- SER GND --- GND
arduino连接SD/TF卡模块:
D4 --- SS D11 --- MOSI
D12 --- MISO D13 --- SCK
* 方法1、Micro SD / TF卡 SPI通信
首先我们需要一个Micro SD / TF卡模块,当然你也可以根据原理图亲手焊制一个,本人手中即是亲手焊的模块,可以直接插在UNO上:
动画组数据文件(dat文件直接存放在SD卡根目录,不需要包含文件夹):
只使用一个UNO读取SD卡并显示程序:(程序只识别dat格式文件)
使用两个UNO,一个读取SD卡:
一个显示至光立方:
提示:两个主板通过串口连接,读取SD卡的主板连接到SD卡模块;显示主板连接到光立方。
参考资料:
Micro SD / TF卡模块原理图:
Micro SD / TF卡引脚图:
* 方法2、24C256储存芯片 IIC通信
24C256 芯片手册:
使用方法不多做介绍,给大家两个网址,很详细 - arduino官网:http://playground.arduino.cc/Code/I2CEEPROM24C1024
- http://www.hobbytronics.co.uk/arduino-external-eeprom
只使用一个UNO读取24C256并显示程序:
使用两个UNO,一个读取,一个显示:
在读数据之前一定先写入数据才行!写数据:
1、可以使用我们的软件,使用OffLine按钮(详见:软件使用介绍)
2、根据通信格式(每一帧数据格式:数据头 - 24 4D 3E + 数据长度 + 指令+数据+校验和),使用串口软件发送,也可以!
* 方法3、控制板自带EEPROM读写
arduino控制板自带的EEPROM,最方便,不需要连接其他模块,直接连接到光立方即可!最关键的是读取显示不会出现闪烁情况!可惜EEPROM空间小了点!
EEPROM库使用介绍:http://www.yfrobot.com.cn/wiki/index.php?title=EEPROM%E5%BA%93
不同的Arduino有不同大小的EEPROM分别为:
ATmega328 -- 1024字节
ATmega168 and ATmega8 -- 512字节
ATmega1280 and ATmega2560 -- 4 KB (4096 字节)
这里使用的是328,所有只有 1024字节,一组数据68个字节,只能存15帧动画!!
读写程序:
[C] 纯文本查看 复制代码 // 如果定义 UseEEPROMRead 则从 EEPROM 中读取数据并显示
// 否则 读取串口数据执行响应指令,详情请看serialCommunication中的函数evaluateCommand()
// 如果定义 UseEEPROMWrite 则可读取串口数据,并写入EEPROM
#define UseEEPROMRead //读取EEPROM
//#define UseEEPROMWrite //写入EEPROM
根据上面的说明更改程序,来读取或者写入EEPROM,在读数据之前一定先写入数据才行!
写数据:
1、可以使用我们的软件,使用OffLine按钮(详见:软件使用介绍)
2、根据通信格式(每一帧数据格式:数据头 - 24 4D 3E + 数据长度 + 指令+数据+校验和),使用串口软件发送,也可以!
本文有任何不清楚的地方,欢迎回帖讨论,也可联系finalvalue@foxmial.com!!!
推荐使用Magic_LightCube V2.4 -- 完美脱机动画显示版本
|