在本教程中,我将一步一步地指导您如何使用Arduino Mega创建和制作一个5x5x5 LED立方体。本教程还将涵盖制作5x5x5 LED立方体所需的所有基础知识,如如何使用LED创建3D布局,如何创建不同的动画和模式,电路和代码的工作,Arduino Mega的板和引脚配置。

Arduino Mega的董事会配置

Arduino兆板配置

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 PIN:

  • 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
  • led(任何颜色)- 125
  • 电阻220欧姆- 30
  • 跳线电线
  • 焊丝
  • 烙铁

项目工作

这个LED立方体总共包括125个LED。我们将在Arduino Mega Board的帮助下控制每个LED。为了控制LED立方体中的所有LED,我们将此多维数据集分成5层和25列。层是层数0,层1,层2,层3和层4.每个层由25个LED组成,并且存在于特定层中的所有LED的负端子彼此连接。类似地,所有其他层都包括相同数量的LED,并且所有LED的负端子彼此连接。

然后我们有25列从C0,C2,C3,C4,C5 ..........C24开始。柱C0由Layer0,Layer1,Layer2,Layer3和Layer4的LED组成,并且所有这些LED的正端子彼此连接。类似地,所有其他列以相同的方式连接。

因此,每个LED在LED立方体中具有独特的位置,可以由图层和列号指定。类似,立方体的第一个LED是(Layer0,C0)。类似地,立方体的2个LED是(Layer0,C1)等。
假设你想打开第一个LED,然后你必须连接层0到GND和c0到5V。同样,如果你想打开最后一个LED,那么你必须连接层4到GND和c24到5V。同样,你可以打开和关闭所有的led。

按照以下步骤制作5x5x5的LED立方体

第一步:逐个测试所有的led,确保所有的led都正常工作。这是最重要的一步,因为它真的很难用立方体取代LED完成。如图所示,您可以使用实验板来实现此目的。

步骤2:拿纸板ND制作125个孔,如图所示。您可以为此目的使用钻机。孔的直径应为5毫米。

步骤3:弯曲所有LED的负端子,如图所示。

将25个led灯全部插入孔中。

步骤5:第一行中存在的所有LED的焊料负极端子。

步骤6:以相同的方式焊接所有其他行。

第七步:现在,用银线连接所有的行。

第8步:你必须创建四个像这样的层。总共需要五层。

把所有的列一一连接起来。你可以在层间放置一块纸板,便于焊接。记住有25列。

步骤10:连接所有的列和层后,你会得到5层和25列。

步骤11:连接所有的层和列Arduino Mega Board

5x5x5 LED立方电路和代码

步骤12:上传代码到Arduino Mega Board

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 <5; i ++){pinmode(layerpin [i],输出);for(int i = 0; i <25; i ++){pinmode(polumplpin [i],输出);for(int i = 0; i <5; i ++){digitalwrite(layerpin [i],高);}} void循环(){动画1();clearpin();动画2();void clearpin(){for(int i = 0; i <5; i ++){digitewrite(layerpin [i],高);} for(int i=0;i<25;i++) {digitalWrite(columnPin[i],LOW); } } void animation1() { for(int i=0;i<25;i++) { digitalWrite(columnPin[i],HIGH); for(int y=0;y<5;y++) { digitalWrite(layerPin[i],LOW); delay(1000); digitalWrite(layerPin[i],HIGH); delay(1000); } digitalWrite(columnPin[i],LOW); } } void animation2() { for(int i=0;i<5;i++) { digitalWrite(layerPin[i],LOW); for(int y=0;y<25;y++) { digitalWrite(columnPin[i],HIGH); } delay(1000); for(int y=0;y<25;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()内,首先将所有图层引脚设置为输出UISng A for循环。

void setup(){for(int i = 0; i <5; i ++){pinmode(layerpin [i],输出);}

同样,将所有列引脚设置为输出使用A for循环。

for(int i = 0; i <25; i ++){pinmode(polumplpin [i],输出);}

将所有图层引脚设置为高,因为当您使用Pinmode()函数时,默认情况下所有引脚都设置为低电平。我们已将所有LED的负端子连接到这些图层引脚。所以,我们必须让他们高。

for(int i=0;i<5;i++) {digitalWrite(layerPin[i],HIGH);}

这是一个函数来设置所有的列和层引脚的默认状态。层引脚必须设置为高,柱引脚必须设置为低,以便关闭LED。这个函数将有助于从一个模式转移到另一个模式。

void clearPin() {for(int i=0;i<5;i++) {digitalWrite(layerPin[i],HIGH);} for(int i=0;i<25;i++) {digitalWrite(columnPin[i],LOW);}}

这是另一个函数,我创建它是为了生成第一个动画。在这个动画中,所有的led将一个接一个地打开和关闭。

void animation1() {for(int i=0;i<25;i++) {digitalWrite(columnPin[i],HIGH);for(int y=0;y<5;y++) {digitalWrite(layerPin[i],LOW);延迟(1000);digitalWrite (layerPin[我],高);延迟(1000);} digitalWrite (columnPin[我],低);}}

此功能适用于第二个动画。在此动画中,该图层将逐个打开和关闭。这就是您可以使用此LED多维数据集创建所需的任何动画。

void animation2() {for(int i=0;i<5;i++) {digitalWrite(layerPin[i],LOW);for(int y=0;y<25;y++) {digitalWrite(columnPin[i],HIGH);}延迟(1000);for(int y=0;y<25;y++) {digitalWrite(columnPin[i],LOW);}延迟(1000);digitalWrite (layerPin[我],高);}}

这是该项目的主循环。首先,将运行动画1。然后使用ClearPin()函数,我们将清除所有引脚。在该动画2将运行之后,这三个函数将在循环中再次运行。

void循环(){Animation1();clearpin();动画2();}

输出结果

作者

评论被关闭。