发一个正在做的8*8*8光立方-Arduino中文社区 - Powered by Discuz! Archiver

zong0001 发表于 2019-3-23 19:56

发一个正在做的8*8*8光立方

最近不怎么忙就焊接了一个光立方,第一次做,也没什么参考。有思路后就开工。用激光雕刻机做了个焊接的模板,3mm的孔,间距10mm,再上面一排一排的做好再焊接。

用的高亮红色3mm,高度没怎么注意结果间距大有些偏高了。




驱动电路用的自制的595小板子,一共9片,8片负责纵向控制,最后一片负责8个层控制,用2803做驱动。






编了个小程序测试了一下,最终成功。焊接一定要注意焊好一排就挨个测试,都亮了再继续。要是完成了再发现不亮的就麻烦了。


附刚刚写的测试程序:
各种变换效果抽空再编写了。

又订购了双色的3mmLED,再做异形的。
// 使用 74HC595
// 接 74HC595 的 ST_CP (pin 12,latch pin)
#define latchPin 5
// 接 74HC595 的 SH_CP (pin 11, clock pin)
#define clockPin4
// 接 74HC595 的 DS (pin 14)
#define dataPin3
#define dataPin29//双色备用

const byte ta ={
{0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},
{0xFF,0x7E,0x00,0x00,0x00,0x00,0x7E,0xFF},
{0xFF,0x7E,0x3C,0x00,0x00,0x3C,0x7E,0xFF},
{0xFF,0x7E,0x3C,0x18,0x18,0x3C,0x7E,0xFF},
{0xFF,0x7E,0x3C,0x18,0x18,0x3C,0x7E,0xFF},
{0xFF,0x7E,0x3C,0x00,0x00,0x3C,0x7E,0xFF},
{0xFF,0x7E,0x00,0x00,0x00,0x00,0x7E,0xFF},
{0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},

};
void setup() {
// 将 latchPin, clockPin, dataPin 设置为输出
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(dataPin2, OUTPUT);

Serial.begin(115200);

}
void loop() {
    for (int x = 0;x<8;x++){
      outchar(x);
      delay(50);
    }   
    for (int x = 7;x>=0;x--){
      outchar(x);
      delay(50);
    }
}
void outchar(int outx){
      digitalWrite(latchPin, LOW);
          OUTDATA(dataPin,dataPin2, clockPin,1<<(7-outx),0);
       for (int m=0;m<8;m++){
          OUTDATA(dataPin,dataPin2, clockPin,ta,0);
       }
    digitalWrite(latchPin, HIGH);

}
void OUTDATA(uint8_t x,uint8_t y, uint8_t clockp, uint8_t val, uint8_t val_2){
      uint8_t i;
      for (i = 0; i < 8; i++){
                  digitalWrite(x, (val & ( 1<< i )));
                  digitalWrite(y, (val_2 & (1<< i )));
                  digitalWrite(clockp, HIGH);
                  digitalWrite(clockp, LOW);         
      }
}





zong0001 发表于 2019-3-24 17:30



S型扭呀扭
#include <MsTimer2.h>//定时中断的库
// 使用 74HC595
// 接 74HC595 的 ST_CP (pin 12,latch pin)
#define latchPin 5
// 接 74HC595 的 SH_CP (pin 11, clock pin)
#define clockPin4
// 接 74HC595 的 DS (pin 14)
#define dataPin3
#define dataPin29//双色备用

byte led ={
{0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},
{0x00,0x7E,0x00,0x00,0x00,0x00,0x7E,0x00},
{0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00},
{0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},
{0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},
{0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00},
{0x00,0x7E,0x00,0x00,0x00,0x00,0x7E,0x00},
{0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},

};
byte buff;
uint8_t layer = 0;
unsigned int num = 0;
void ledout(){//定时中断,扫描每一层
    layer++;
    if (layer ==8)
      layer = 0;
    outchar(layer);

}
void setup() {
// 将 latchPin, clockPin, dataPin 设置为输出
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(dataPin2, OUTPUT);
   MsTimer2::set(2, ledout); // 2ms period
MsTimer2::start();

//Serial.begin(115200);

}
void loop() {
for(int i = 0;i<8;i++){//把底层放入缓存
            buff = led;
    }
for(int i=0;i<7;i++){   //顺序下移一层
    for(int j=0;j<8;j++){
         led = led;
   }
    }
for(int i = 0;i<8;i++){   //把缓存放入顶层
         led = buff;
    }

    delay(100);

}
void outchar(int outx){
      digitalWrite(latchPin, LOW);
          OUTDATA(dataPin,dataPin2, clockPin,1<<(7-outx),0);//层选中
         // int m=5;
       for (int m=0;m<8;m++){   //输出8个立面
          OUTDATA(dataPin,dataPin2, clockPin,led,0);
       }
    digitalWrite(latchPin, HIGH);

}
void OUTDATA(uint8_t x,uint8_t y, uint8_t clockp, uint8_t val, uint8_t val_2){
      uint8_t i;
      for (i = 0; i < 8; i++){
                  digitalWrite(x, (val & ( 1<< i )));
                  digitalWrite(y, (val_2 & (1<< i )));
                  digitalWrite(clockp, HIGH);
                  digitalWrite(clockp, LOW);         
      }
}


zong0001 发表于 2019-3-25 14:17

贴设计板图,上午刚弄的。打算做16*16*16双色的。估计要半年完成吧。




一个双色单元。16光立方要用32片,用64片595,再加两片层驱动。

用红蓝双色3mm雾状灯


zong0001 发表于 2019-4-6 18:58

第二个焊接练习


zong0001 发表于 2019-4-6 19:00


suifengtec 发表于 2019-5-30 23:47

嗯,很赞,很久前在油管上见过这个项目。

wangyirun 发表于 2019-6-27 13:53

既漂亮又实用
页: [1]
查看完整版本: 发一个正在做的8*8*8光立方