在本教程中,我将一步步指导您如何使用Arduino Mega创建和制作一个5x5x5的LED立方体。亚搏app下载ios软件安装本教程还将涵盖制作5x5x5 LED立方体所需的所有基础知识,比如如何使用LED创建一个3D排列,如何创建不同的动画和模式,电路和代码的工作,Arduino Mega的电路板和引脚配置。

Arduino Mega单板配置

Arduino Mega板配置

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功能

  • 工作电压:5 v
  • 输入电压: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列。这些层分别是layer0、layer1、layer2、layer3和layer 4。每一层由25个led组成,该层中所有led的负端相互连接。同样,所有其他层由相同数量的led组成,所有led的负端相互连接。

然后我们有25列从c0 c2 c3 c4 c5...........c24开始。c0列由0层、1层、2层、3层、4层的LED组成,各LED的正极相互连接。类似地,所有其他列都以同样的方式连接。

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

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

步骤1:逐一测试所有的led灯,确保所有的led灯都工作正常。这是所有步骤中最重要的一步,因为用立方体替换LED真的很难完成。如图所示,您可以使用一个面包板来实现此目的。

第二步:拿一张硬纸板,如图所示打125个孔。你可以用一台钻床来达到这个目的。孔的直径应为5mm。

步骤三:如图所示,将所有led的负端弯曲。

步骤四:将所有25个led插入孔中。

焊接第一行所有led的负端子。

第六步:用同样的方式焊接所有其他行。

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

你必须像这样创建四个层。我们总共需要五层。

第9步:将所有列一一连接起来。你可以在两层之间放置一块纸板,以便于焊接。记住这里有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],OUTPUT);} for(int i=0;i<25;i++) {pinMode(columnPin[i],OUTPUT);} for(int i=0;i<5;i++) {digitalWrite(layerPin[i],HIGH);}} void loop() {animation1();clearPin ();animation2 ();} void clearPin() {for(int i=0;i<5;i++) {digitalWrite(layerPin[i],HIGH);} 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()中,首先使用for循环将所有层引脚设置为OUTPUT。

void setup() {for(int i=0;i<5;i++) {pinMode(layerPin[i],OUTPUT);}

类似地,使用for循环将所有列引脚设置为OUTPUT。

for(int i=0;i<25;i++) {pinMode(columnPin[i],OUTPUT);}

将所有层引脚设置为HIGH,因为当你使用pinMode()函数时,默认情况下所有引脚都设置为LOW。我们已经将所有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[我],高);} }

这是这个项目的主循环。首先,动画将运行。然后使用clearPin()函数,我们将清除所有引脚。之后,animation2将运行,这三个函数将在循环中反复运行。

Void loop() {animation1();clearPin ();animation2 ();}

输出结果

作者

评论都关门了。

Baidu