「科学技術の男性の最後のロマンス」では、LEDキューブの作成方法を説明しています(チュートリアル付き)

このチュートリアルでは、ArduinoMegaを使用して5x5x5LEDキューブを作成および作成する方法を段階的に説明します。このチュートリアルでは、LEDを使用して3D配置を作成する方法、さまざまなアニメーションとパターンを作成する方法、回路とコードの動作、Arduino Megaのボードとピンの構成など、5x5x5LEDキューブを作成するために必要なすべての基本についても説明します。

Arduinoメガボード構成

 

ArduinoMegaのピン配置

デジタル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

ArduinoMegaの機能

  • 動作電圧: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メガボードを使用して各LEDを制御します。LEDキューブに存在するすべてのLEDを制御するために、キューブを5つのレイヤーと25の列に分割します。これらのレイヤーは、レイヤー0、レイヤー1、レイヤー2、レイヤー3、レイヤー4です。各層は25個の発光ダイオードで構成されており、特定の層のすべての発光ダイオードのマイナス端子は互いに接続されています。同様に、他のすべての層は同じ数のLEDで構成され、すべてのLEDのマイナス端子は互いに接続されています。

 

 

次に、c0、c2、c3、c4、c5....c24から始まる25の列があります。列c0は、レイヤー0、レイヤー1、レイヤー2、レイヤー3、およびレイヤー4のLEDで構成され、これらすべてのLEDのプラス端子は相互に接続されています。同様に、他のすべての列も同じ方法で結合されます。

 

したがって、各LEDは、LEDキューブ内で一意の位置を持ち、レイヤーと列の数で指定できます。同様に、立方体の最初のLEDは(layer0、c0)です。同様に、立方体の2番目のLEDは(レイヤー0、c1)などです。

最初のLEDをオンにする場合は、レイヤー0をGNDに接続し、c0を5Vに接続する必要があるとします。同様に、最後のLEDをオンにする場合は、レイヤー4をGNDに接続し、c24を5Vに接続する必要があります。同様に、すべてのLEDをオンまたはオフにすることができます。

 

以下の手順に従って、5x5x5LEDキューブを作成します

ステップ1:すべてのライトを1つずつテストして、すべてのライトが正しく機能していることを確認します。キューブの完成後にLEDを交換するのは難しいため、これはすべてのステップの中で最も重要です。このために、示されているようにブレッドボードを使用できます。

 

ステップ2:段ボールを取り出し、図のように125個の穴を開けます。このために、ドリルを使用できます。この穴の直径は5mmである必要があります。

 

 

ステップ3:図のようにすべてのLEDのマイナス端子を曲げます。

 

ステップ4:25個のLEDすべてを穴に挿入します。

ステップ5:最初の行のすべてのLEDのマイナス端子をはんだ付けします。

 

ステップ6:同じ方法で他の列をはんだ付けします。

 

ステップ7:次に、すべての列を銀線で接続します。

ステップ8:このようにさらに4つのレイヤーを作成する必要があります。全部で5階必要です。

手順9:すべての投稿を1つずつ接続します。はんだ付けを容易にするために、2つの層の間に段ボールを置くことができます。25列あることを忘れないでください。

 

ステップ10:すべての列とレイヤーを接続すると、5つのレイヤーと25の列が得られます。

ステップ11:すべてのレイヤーと列をArduinoメガボードに接続する

 

ステップ12:コードをArduinoメガボードにアップロードする

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);

  }

}

ボイド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);

  }

}

ボイド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という配列を作成し、その中にすべてのピン番号を格納しました。

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

列のすべての連絡先を定義します。このために、columnPinという配列を作成し、その中にすべてのピン番号を格納しました。

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 <5; i ++)

{{

  pinMode(layerPin [i]、OUTPUT);

}

同様に、forループを使用して、すべての列ピンを出力として設定します。

for(int i = 0; i <25; i ++)

{{

  pinMode(columnPin [i]、OUTPUT);

}

pinMode()関数を使用すると、デフォルトですべてのピンがLowに設定されるため、すべてのレイヤーピンをHighに設定します。すべての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が1つずつオンとオフになります。

ボイド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);

  }

}

この関数は、2番目のアニメーションに使用されます。このアニメーションでは、レイヤーが次々に開いたり閉じたりします。これは、このLEDキューブを使用して必要なアニメーションを作成する方法です。

ボイド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);

  }

}

これがこのプロジェクトのメインループです。まず、アニメーション1が実行されます。次に、clearPin()関数を使用して、すべてのピンをクリアします。その後、アニメーション2が実行され、3つの関数がループで繰り返し実行されます。

void loop(){

Animation1();

clearPin();

Animation2();

}

結果を示す

 

おすすめ

転載: blog.csdn.net/danpianji777/article/details/123138849