tft每日頭條

 > 圖文

 > diy立方體教程

diy立方體教程

圖文 更新时间:2024-08-18 09:23:18

在本教程中,我将逐步指導您如何使用Arduino Mega創建和制作5x5x5 LED立方體。本教程還将涵蓋制作5x5x5 LED立方體所需的所有基礎知識,如如何使用LED創建3D排列,如何創建不同的動畫和圖案,電路和代碼的工作,Arduino Mega的電路闆和引腳配置。

Arduino Mega的闆卡配置

diy立方體教程(理工男最後的浪漫)1

Arduino Mega的引腳配置

數字I/O引腳:D0-D53

模拟輸入引腳:A0-A15

PWM引腳:2–13,44–46

I2C引腳:SDA(20), SCL(21)

SPI引腳:50 (MISO)、51 (MOSI)、52 (SCK)、53 (SS)

UART引腳:

·TX0-D0,RX0- D1

·TX1-D19,RX1- D18

·TX2-D16,RX2-D17

·TX3-D14,RX3-D15

Arduino Mega的特性

·工作電壓:5V

·輸入電壓:6-20V

·工作電流:

·輸出電壓:3.3V和5V

·輸出電流:20mA(5V)和50mA(3.3V)

·數字I/O引腳:54

·ADC引腳:16

·PWM引腳:15

·UART: 4

此項目所需的組件

·arduino Mega–1

·發光二極管(任何顔色)- 125

·電阻器220歐姆- 30

·跳線

·焊絲

·烙鐵

項目的運作

這個LED立方體總共由125個LED組成。我們将在Arduino Mega闆的幫助下控制每個LED。為了控制LED立方體中存在的所有LED,我們将該立方體分成5層和25列。這些層是第0層、第1層、第2層、第3層和第4層。每層由25個發光二極管組成,特定層中所有發光二極管的負極端子相互連接。類似地,所有其他層由相同數量的led組成,并且所有led的負極端子彼此連接。

diy立方體教程(理工男最後的浪漫)2

diy立方體教程(理工男最後的浪漫)3

那麼我們有25列,從c0、c2、c3、c4、c5開始……..c24。列c0由來自層0、層1、層2、層3和層4的LED組成,并且所有這些LED的正極端子相互連接。同樣,所有其他列也以同樣的方式連接。

diy立方體教程(理工男最後的浪漫)4

因此,每個LED在LED立方體中都有一個唯一的位置,可以通過層數和列數來指定。像,立方體的第一個LED是(layer0,c0)。類似地,立方體的第二個LED是(層0,c1)等等。

假設如果你想打開第一個LED,那麼你必須将層0連接到GND,将c0連接到5V。類似地,如果你想打開最後一個LED,那麼你必須将第4層連接到GND,将c24連接到5V。同樣,你可以打開和關閉所有的發光二極管。

diy立方體教程(理工男最後的浪漫)5

按照以下步驟制作5x5x5 LED立方體

第一步:逐個測試所有指示燈,确保所有指示燈都工作正常。這是所有步驟中最重要的一步,因為立方體完成後很難更換LED。為此,您可以使用如圖所示的試驗闆。

diy立方體教程(理工男最後的浪漫)6

第二步:拿一塊紙闆,如圖所示鑽125個洞。為此你可以使用鑽孔機。這個洞的直徑應該是5毫米。

diy立方體教程(理工男最後的浪漫)7

diy立方體教程(理工男最後的浪漫)8

步驟3:彎曲所有led的負極端子,如圖所示。


第四步:将所有25個發光二極管插入孔中。

diy立方體教程(理工男最後的浪漫)9

步驟5:焊接第一行中所有led的負極端子。


第六步:用同樣的方法焊接其他排。


第七步:現在,用銀線連接所有的行。

diy立方體教程(理工男最後的浪漫)10

第八步:你必須像這樣再創建四層。我們總共需要五層。

diy立方體教程(理工男最後的浪漫)11

第九步:把所有的柱子一個一個連接起來。您可以在兩層之間放置一塊紙闆,以便于焊接。記住有25列。

diy立方體教程(理工男最後的浪漫)12

步驟10:連接所有的列和層後,你會得到5層和25列。

diy立方體教程(理工男最後的浪漫)13

步驟11:将所有的層和列連接到Arduino Mega闆上

diy立方體教程(理工男最後的浪漫)14

步驟12:将代碼上傳到Arduino Mega闆上

int layerPin[5]={13,12,11,10,9};

int columnPin[25]={2,3,4,5,6,7,8,14,15,16,17,18,19,21,22,23,24,25,26,27,28,29,30,31};

void setup() {

for(int i=0;i

{

pinMode(layerPin[i],OUTPUT);

}

for(int i=0;i

{

pinMode(columnPin[i],OUTPUT);

}

for(int i=0;i

{

digitalWrite(layerPin[i],HIGH);

}

}

void loop() {

animation1();

clearPin();

animation2();

}

void clearPin()

{

for(int i=0;i

{

digitalWrite(layerPin[i],HIGH);

}

for(int i=0;i

{

digitalWrite(columnPin[i],LOW);

}

}

void animation1()

{

for(int i=0;i

{

digitalWrite(columnPin[i],HIGH);

for(int y=0;y

{

digitalWrite(layerPin[i],LOW);

delay(1000);

digitalWrite(layerPin[i],HIGH);

delay(1000);

}

digitalWrite(columnPin[i],LOW);

}

}

void animation2()

{

for(int i=0;i

{

digitalWrite(layerPin[i],LOW);

for(int y=0;y

{

digitalWrite(columnPin[i],HIGH);

}

delay(1000);

for(int y=0;y

{

digitalWrite(columnPin[i],LOW);

}

delay(1000);

digitalWrite(layerPin[i],HIGH);

}

}

代碼的工作

首先定義所有圖層索引。為此,我創建了一個名為layerPin的數組,并在其中存儲了所有的Pin号。

int layerPin[5]={13,12,11,10,9};

定義列的所有接點。為此,我創建了一個名為columnPin的數組,并在其中存儲了所有的Pin号。

int columnPin[25]={2,3,4,5,6,7,8,14,15,16,17,18,19,21,22,23,24,25,26,27,28,29,30,31};

在void setup()中,首先使用for循環将所有層引腳設置為輸出。

void setup() {

for(int i=0;i

{

pinMode(layerPin[i],OUTPUT);

}

類似地,使用for循環将所有列引腳設置為輸出。

for(int i=0;i

{

pinMode(columnPin[i],OUTPUT);

}

将所有層引腳設置為高電平,因為當使用pinMode()函數時,默認情況下所有引腳都設置為低電平。我們已經将所有led的負極端子連接到這些層引腳。所以,我們必須讓他們高。

for(int i=0;i

{

digitalWrite(layerPin[i],HIGH);

}

這是一個将所有列和層引腳設置為默認狀态的功能。為了關閉LED,層引腳必須設為高電平,列引腳必須設為低電平。該功能将有助于從一種模式轉換到另一種模式。

void clearPin()

{

for(int i=0;i

{

digitalWrite(layerPin[i],HIGH);

}

for(int i=0;i

{

digitalWrite(columnPin[i],LOW);

}

}

這是另一個函數,我創建它是為了生成第一個動畫。在這個動畫中,所有的led将一個接一個地打開和關閉。

void animation1()

{

for(int i=0;i

{

digitalWrite(columnPin[i],HIGH);

for(int y=0;y

{

digitalWrite(layerPin[i],LOW);

delay(1000);

digitalWrite(layerPin[i],HIGH);

delay(1000);

}

digitalWrite(columnPin[i],LOW);

}

}

此功能用于第二個動畫。在這個動畫中,該層将一個接一個地打開和關閉。這就是你如何使用這個LED立方體創建任何你想要的動畫。

void animation2()

{

for(int i=0;i

{

digitalWrite(layerPin[i],LOW);

for(int y=0;y

{

digitalWrite(columnPin[i],HIGH);

}

delay(1000);

for(int y=0;y

{

digitalWrite(columnPin[i],LOW);

}

delay(1000);

digitalWrite(layerPin[i],HIGH);

}

}

這是這個項目的主循環。首先,動畫1将運行。然後使用clearPin()函數,我們将清除所有的管腳。之後,動畫2将運行,這三個函數将在一個循環中反複運行。

void loop() {

animation1();

clearPin();

animation2();

}

效果展示

diy立方體教程(理工男最後的浪漫)15

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved