佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 10763|回复: 91

8x8x8 LED cube 挑战成功! 新版本在研究中..

[复制链接]
发表于 31-7-2013 01:47 AM | 显示全部楼层 |阅读模式
本帖最后由 angels1026 于 4-1-2016 12:38 AM 编辑

小弟想要做个 8x8x8 LED
LED 方面已经完成了
小弟现在要做它的 controller
小弟想要用 74CH595 用 9粒  8粒 control collumn, 一粒控制 layer
然后用一粒 arduino UNO shift out .. 源码之类的小弟需要实验来吸收和研究... 之前还没有玩过
2013-07-30 09.32.37.jpg
2013-07-30 09.35.39.jpg

2013-07-30 09.35.46.jpg

2013-07-30 10.06.27.jpg

2013-07-30 11.19.04.jpg

2013-07-30 13.22.59.jpg

2013-07-30 16.44.12.jpg

2013-07-30 16.44.23.jpg

2013-07-30 16.44.36.jpg

2013-07-30 19.46.32.jpg

2013-07-30 20.26.49.jpg

2013-07-30 20.27.11.jpg

2013-08-01 23.36.44.jpg

2013-08-02 00.20.24.jpg

2013-08-03 00.25.54.jpg

2013-08-03 00.26.03.jpg

2013-08-03 00.26.13.jpg

2013-08-03 00.26.21.jpg

2013-08-03 17.44.21.jpg

2013-08-03 17.44.33.jpg

2013-08-03 17.44.50.jpg

2013-08-03 17.45.04.jpg

2013-08-04 22.43.59.jpg

2013-08-04 22.44.10.jpg




**** 2015 更新一下, 本人已经做了一个更加强版的 LED cube  RGB 8x8x8 LED cube ****

评分

参与人数 1积分 +50 收起 理由
pic + 50 DIY 精神可嘉~

查看全部评分

回复

使用道具 举报


ADVERTISEMENT

发表于 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
ArduinoMega2560_R3_Front_450px.jpg
回复

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

Follow Us
发表于 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 | 显示全部楼层
西门庆33 发表于 1-8-2013 11:11 PM
我好像算错了什么似的。先给我一些时间证实

大哥... 我的 74HC595 已经连接好了...
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
西门庆33 发表于 1-8-2013 11:31 PM
应该是用8颗74HCT574 Octal D-type flip-flop。八个digital IO控制8颗74HCT574 Octal D-type flip-flopr, ...

用 shiftout 可以暂时过关吗.. 其实这个不是我的 单单做2 partten 就收工... 是我的老板要我做一个给他的,他要用来吹水... 和朋友车大炮
要一个修车老做 led cube 8x8x8 有点 货不对版,牛头不接马尾, 我做先然后给我吹一轮先,然后他拿去和他朋友吹...
LED 我忘记把头做蒙蒙... 下次做自己的 cube 一定会加倍小心
回复

使用道具 举报

发表于 2-8-2013 12:22 AM | 显示全部楼层
angels1026 发表于 1-8-2013 11:15 PM
大哥... 我的 74HC595 已经连接好了...

哦!已经接好了。怎样连接?
用回75HC595吧。也是八颗(8x8=64 输出),只用三条信号线控制八颗 75HC595

图下只显示6颗75HC595,你要用八颗75HC595
BD139晶体管电流不足,用大功率晶体管或FET代替之
Schmatics_12x8_RGB_Matrix.jpg
这是我之前算错的,不曉得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 | 显示全部楼层
angels1026 发表于 2-8-2013 12:34 AM
大哥... GND 的用 2粒 2N2222.. 我抄人家的
还有就是 regulator 我选用 LV7805 可以不可以两粒一起用 ?  ...

并联2N2222肯定没问题
并联7805?不行吧。为何不用3A的LM323
a-lm323.png
你的8x8x8 led cude到那个阶段了
回复

使用道具 举报

发表于 2-8-2013 01:46 PM | 显示全部楼层
angels1026 发表于 2-8-2013 12:34 AM
大哥... GND 的用 2粒 2N2222.. 我抄人家的
还有就是 regulator 我选用 LV7805 可以不可以两粒一起用 ?  ...

如果需要使用大电流的5V power supply
通常我会用 下面这种
sku_145841_1(2).jpg
回复

使用道具 举报

 楼主| 发表于 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,这不是更麻烦吗?
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 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

要吸收这个编制需要时间
  1. #include <TimerOne.h>
  2. #include <string.h>
  3. #define AXIS_X 1
  4. #define AXIS_Y 2
  5. #define AXIS_Z 3
复制代码
想问问这几个东西是什么来的啊
  1. int latchPinPORTB = latchPin -8;
复制代码
  1. void iProcess(){
  2.   int oldLayerBit = current_layer + 2;
  3.   current_layer++;
  4.   if(current_layer >=8){
  5.     current_layer = 0;
  6.   }
  7.   latchOff();
  8.   for(int i = 0; i < 8; i ++){
  9.     spi_transfer(cube[current_layer][i]);
  10.   }
  11.   digitalWrite(oldLayerBit,LOW);
  12.   latchOn();
  13.   digitalWrite(current_layer +2, HIGH);
  14. }
复制代码
这个东西不知道什么意思
  1. void setupSPI(){
  2.   byte clr;
  3.   SPCR |= ( (1<<SPE) | (1<<MSTR) ); // enable SPI as master
  4.   SPCR &= ~( (1<<SPR1) | (1<<SPR0) ); // clear prescaler bits
  5.   clr=SPSR; // clear SPI status reg
  6.   clr=SPDR; // clear SPI data reg
  7.   SPSR |= (1<<SPI2X); // set prescaler bits
  8.   delay(10);
  9. }
复制代码
  1. byte spi_transfer(byte data)
  2. {
  3.   SPDR = data;
  4.   loop_until_bit_is_set(SPSR,SPIF);
  5.   return SPDR;
  6. }
复制代码
那个 byte 是什么来的
  1.   Timer1.initialize(100);
  2.   Timer1.attachInterrupt(iProcess);
复制代码
看来我有很多不明白的东西还学人家玩什么 LED cube







这个是什么东西来的啊

本帖最后由 angels1026 于 5-8-2013 03:51 PM 编辑

回复

使用道具 举报

 楼主| 发表于 5-8-2013 12:01 PM | 显示全部楼层
如果我自己编制。。相信一定很够力长..真的有点好奇为什么人家的源码做的那么厉害
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 16-4-2024 11:29 PM , Processed in 0.109741 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表