查看: 12350|回复: 91
|
8x8x8 LED cube 挑战成功! 新版本在研究中..
[复制链接]
|
|
发表于 31-7-2013 10:33 AM
|
显示全部楼层
使用shiftPWM吧!只需要三条信号线搞定。
shiftWM支持software PWM和hardware PWM。hardware PWM会比software PWM快2.5倍
这是作者说的
ShiftPWM works with software PWM: it calculates the value (high/low) for each shift register pin and updates all shift registers 19200 times per second (at 75Hz and 256 levels). This takes about 5 clock cycles per output pin and a bit of overhead per interrupt. 你的8x8x8 = 8x3 shift register=24bits
和以上256(75Hz刷新计算)比较,筒直是大巫见小巫
|
|
|
|
|
|
|
|
楼主 |
发表于 31-7-2013 01:23 PM
|
显示全部楼层
西门庆33 发表于 31-7-2013 10:33 AM
使用shiftPWM吧!只需要三条信号线搞定。
shiftWM支持software PWM和hardware PWM。hardware PWM会比softw ...
大哥... 你的意思是指 8x3 shift ? 用 3 解 8 的解码器 ? 小弟手上有 74HC138N 74HC574 和 7HC595 可以使用吗 ?
源码方面要怎么写啊 如果是 shift register agak agak 还知道
|
|
|
|
|
|
|
|
发表于 1-8-2013 08:30 PM
|
显示全部楼层
angels1026 发表于 31-7-2013 01:23 PM
大哥... 你的意思是指 8x3 shift ? 用 3 解 8 的解码器 ? 小弟手上有 74HC138N 74HC574 和 7HC595 可 ...
shiftPWM只针对74HC595。要学shift register就得学74HC595,现在很多电子制作都用 74HC595
你的24bit LED CUDE,每次必须发送 24bit serial data(这不包括latch, output(OE),每发送24bit serial data代表一幅画面,且要不停的刷新。
建议使用Arduino Mega,它有54 Digital I/O,其中14个是PWM
编写代码可以参考你之前的3x3x3 LED cude
|
|
|
|
|
|
|
|
楼主 |
发表于 1-8-2013 08:46 PM
|
显示全部楼层
西门庆33 发表于 1-8-2013 08:30 PM
shiftPWM只针对74HC595。要学shift register就得学74HC595,现在很多电子制作都用 74HC595
你的24bit ...
Mega 我也有一粒...
如果我用 mega 54 I/0 pin LED 的脚一共有 72 个脚 .. 为什么我的 8x8x8 是叫做 24bit 怎么看的
意思是不是说用 mega 然后 分开 shiftRegister
看来我要研究一下了
|
|
|
|
|
|
|
|
楼主 |
发表于 1-8-2013 08:49 PM
|
显示全部楼层
西门庆33 发表于 1-8-2013 08:30 PM
shiftPWM只针对74HC595。要学shift register就得学74HC595,现在很多电子制作都用 74HC595
你的24bit ...
是不是我一共要用 9 粒 shift register 所以
arduino 就用 3 shiftout 每个 shiftout 24 bit
|
|
|
|
|
|
|
|
发表于 1-8-2013 11:11 PM
|
显示全部楼层
angels1026 发表于 1-8-2013 08:49 PM
是不是我一共要用 9 粒 shift register 所以
arduino 就用 3 shiftout 每个 shiftout 24 bit
我好像算错了什么似的。先给我一些时间证实
|
|
|
|
|
|
|
|
楼主 |
发表于 1-8-2013 11:15 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 1-8-2013 11:31 PM
|
显示全部楼层
angels1026 发表于 1-8-2013 08:49 PM
是不是我一共要用 9 粒 shift register 所以
arduino 就用 3 shiftout 每个 shiftout 24 bit
应该是用8颗74HCT574 Octal D-type flip-flop。八个digital IO控制8颗74HCT574 Octal D-type flip-flopr,再用三个digital IO控制8个CLK。最后用八个digital IO 控制led common。一共用了19个digital IO
本帖最后由 西门庆33 于 1-8-2013 11:49 PM 编辑
|
|
|
|
|
|
|
|
楼主 |
发表于 2-8-2013 12:07 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 2-8-2013 12:22 AM
|
显示全部楼层
angels1026 发表于 1-8-2013 11:15 PM
大哥... 我的 74HC595 已经连接好了...
哦!已经接好了。怎样连接?
用回75HC595吧。也是八颗(8x8=64 输出),只用三条信号线控制八颗 75HC595
图下只显示6颗75HC595,你要用八颗75HC595
BD139晶体管电流不足,用大功率晶体管或FET代替之
这是我之前算错的,不曉得LED是否变得闪烁(flickering)
大慨是这样,可能需要更改一些。要睡了
|
|
|
|
|
|
|
|
楼主 |
发表于 2-8-2013 12:34 AM
|
显示全部楼层
西门庆33 发表于 2-8-2013 12:22 AM
哦!已经接好了。怎样连接?
用回75HC595吧。也是八颗(8x8=64 输出),只用三条信号线控制八颗 75HC595
...
大哥... GND 的用 2粒 2N2222.. 我抄人家的
还有就是 regulator 我选用 LV7805 可以不可以两粒一起用 ? 脚对脚 然后 1.2A 变成 2.4A
|
|
|
|
|
|
|
|
发表于 2-8-2013 01:41 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 2-8-2013 01:46 PM
|
显示全部楼层
angels1026 发表于 2-8-2013 12:34 AM
大哥... GND 的用 2粒 2N2222.. 我抄人家的
还有就是 regulator 我选用 LV7805 可以不可以两粒一起用 ? ...
如果需要使用大电流的5V power supply
通常我会用 下面这种
|
|
|
|
|
|
|
|
楼主 |
发表于 2-8-2013 02:10 PM
来自手机
|
显示全部楼层
西门庆33 发表于 2-8-2013 01:46 PM
如果需要使用大电流的5V power supply
通常我会用 下面这种
我要放在车用的有时候拿出外 吹水没有电源... 啊我没有买到3a 的regulator 如果我用三粒 7805 一粒给 三个 shiftregister 分开来用... 可以吗 |
|
|
|
|
|
|
|
发表于 3-8-2013 01:13 PM
|
显示全部楼层
angels1026 发表于 2-8-2013 02:10 PM
我要放在车用的有时候拿出外 吹水没有电源... 啊我没有买到3a 的regulator 如果我用三粒 7805 一粒给 三 ...
假设你是使用common cathod,512粒LED分成三组,毎组led的common cathod接一颗7805,这不是更麻烦吗?
|
|
|
|
|
|
|
|
楼主 |
发表于 3-8-2013 01:42 PM
来自手机
|
显示全部楼层
西门庆33 发表于 3-8-2013 01:13 PM
假设你是使用common cathod,512粒LED分成三组,毎组led的common cathod接一颗7805,这不是更麻烦吗?
啊... 算了吧就用 电脑 psu |
|
|
|
|
|
|
|
楼主 |
发表于 5-8-2013 09:55 AM
来自手机
|
显示全部楼层
西门庆33 发表于 3-8-2013 01:13 PM
假设你是使用common cathod,512粒LED分成三组,毎组led的common cathod接一颗7805,这不是更麻烦吗?
完成了呵呵呵呵 。。 试了网上找的源码.. 没问题哦 哈哈哈 有点爽, 等得空就研究源码 等一下 post video 来分享 |
|
|
|
|
|
|
|
楼主 |
发表于 5-8-2013 12:00 PM
|
显示全部楼层
我抄了这个人的编制
CODE
要吸收这个编制需要时间- #include <TimerOne.h>
- #include <string.h>
- #define AXIS_X 1
- #define AXIS_Y 2
- #define AXIS_Z 3
复制代码 想问问这几个东西是什么来的啊 - int latchPinPORTB = latchPin -8;
复制代码- void iProcess(){
- int oldLayerBit = current_layer + 2;
- current_layer++;
- if(current_layer >=8){
- current_layer = 0;
- }
- latchOff();
- for(int i = 0; i < 8; i ++){
- spi_transfer(cube[current_layer][i]);
- }
- digitalWrite(oldLayerBit,LOW);
- latchOn();
- digitalWrite(current_layer +2, HIGH);
- }
复制代码 这个东西不知道什么意思- void setupSPI(){
- byte clr;
- SPCR |= ( (1<<SPE) | (1<<MSTR) ); // enable SPI as master
- SPCR &= ~( (1<<SPR1) | (1<<SPR0) ); // clear prescaler bits
- clr=SPSR; // clear SPI status reg
- clr=SPDR; // clear SPI data reg
- SPSR |= (1<<SPI2X); // set prescaler bits
- delay(10);
- }
复制代码- byte spi_transfer(byte data)
- {
- SPDR = data;
- loop_until_bit_is_set(SPSR,SPIF);
- return SPDR;
- }
复制代码 那个 byte 是什么来的- Timer1.initialize(100);
- Timer1.attachInterrupt(iProcess);
复制代码 看来我有很多不明白的东西还学人家玩什么 LED cube
这个是什么东西来的啊
本帖最后由 angels1026 于 5-8-2013 03:51 PM 编辑
|
|
|
|
|
|
|
|
楼主 |
发表于 5-8-2013 12:01 PM
|
显示全部楼层
如果我自己编制。。相信一定很够力长..真的有点好奇为什么人家的源码做的那么厉害 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|