聚豐項目 > 玩轉光立方LED Cube 4x4x4
LED Cube 光立方是一個非常酷炫的裝置,當它發光時不僅有炫耀奪目的視覺效果,而且其中還隱藏了不少數學原理。
Cresta
分享Cresta
團隊成員
陳柱 工程師
檢查所有的 LED 是否有正常發亮,彎折 LED,制作固定 LED 的模板,將圓孔母排針焊到電路板上,焊接公排針,焊接 LED。
UNO腳位D0~D13 & A0~A1 分別控制每一顆 LED,D0 控制的 LED 是靠近 D0 腳位那一顆,A1 腳位則是控制距離 D0 最遠的那一顆 LED。A2 控制頂層 LED,A5 則是控制底層 LED。
把所有的腳位都設定成 OUTPUT,才可以指定它要 HIGH 或 LOW。當指定它為 HIGH 時電位是 5V;當指定它為 LOW時電位是 0V,相對于 5V 而言可以把它視為是 GND。
在初始階段為了讓所有的 LED 都不亮,所以在 setup() 階段將 16只 LED 腳位都設為 LOW,并且將控制層面的 4 只腳位都設為 HIGH。此時 LED 受到逆向 5V 的電壓,但因 LED 可承受 5V 逆向偏壓,再加上 UNO 的輸出電流不大(每一腳位為 20mA),所以 LED 不至于會燒毀。個人覺得這是一種為節省材料成本,但卻是非常冒險的電路做法,LED 稍有不慎短路,將會毀壞 Arduino 主板。
//2017-01-01 LED_Cube4_01.ino
#define CUBE_SIZE 4
#define PLANE_SIZE CUBE_SIZE*CUBE_SIZE
#define PLANE_TIME 20
#define LED_TIME 500
int LEDPin[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1};
int PlanePin[] = {A2 , A3, A4, A5};
void setup()
{
int pin;
for (pin = 0; pin < PLANE_SIZE; pin++) {
pinMode(LEDPin[pin], OUTPUT);
digitalWrite(LEDPin[pin], LOW);
}
for (pin = 0; pin < CUBE_SIZE; pin++) {
pinMode(PlanePin[pin], OUTPUT);
digitalWrite(PlanePin[pin], HIGH);
}
}
void loop()
{
for (int plane = 0; plane < CUBE_SIZE; plane++)
{
digitalWrite(PlanePin[plane], LOW);
for (int led = 0; led < PLANE_SIZE; led++)
{
digitalWrite(LEDPin[led], HIGH);
delay(LED_TIME);
digitalWrite(LEDPin[led], LOW);
}
digitalWrite(PlanePin[plane], HIGH);
delay(PLANE_TIME);
}
}
pufuwo: 醫用護理床
[url=http://www.com]醫用護理床[/url]
回復
超級開發板: 64*64的可以當作3D顯示屏用
回復
海闊天地: 你這個方案跟我要做的東西很類似,希望微聊wx 13302482521
回復
海闊天地: 詳細先看我在開源中國發布的項目:https://zb.oschina.net/workbench/reward/manager.html#/detail?id=18526125
回復