工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

DIY LEDハートフォトフレーム–Arduinoプロジェクト

このArduinoプロジェクトでは、Arduinoを使用してすばらしいLEDハートフォトフレームを作成する方法を紹介します。詳細については、次の動画をご覧になるか、以下の記事をご覧ください。

一見普通のフォトフレームのように見えますが、裏側のスイッチをクリックすると異常なフォトフレームになります。このArduinoプロジェクトの構築はとても楽しく、愛する人への完璧なバレンタイン、誕生日、記念日のプレゼントになります。それでは、構築を始めましょう

フォトフレームの準備

まず、シンプルな18 x 13 cmのフォトフレームと、LEDを挿入するための穴を開けるフレームのサイズにカットされたファイバーボードが必要です。次に、パターンとして使用される32個のLEDを使用して、ハートの形を描画して印刷する必要があります。ドリルを使ってLED用の穴を開けます。

穴あけが完了したら、LEDの挿入を開始します。すべてのLEDを同じ側に挿入し、アノードまたは長いリード線を外側に向けて、それらを曲げて後ですべてのLEDのアノードをはんだ付けできるようにする必要があります。

すべてのLEDをはんだ付けしたら、すべてが正しく機能しているかどうかを確認する必要があります。そのためには、正の5ボルトのVCCピンを220オームの抵抗を介してLEDのアノードに接続し、アースピンを使用して各LEDが点灯するかどうかを確認する必要があります。

回路図

このプロジェクトの回路図は次のとおりです。このプロジェクトに必要なコンポーネントの完全なリストは、その下にあります。そのため、LEDの制御にはArduinoNanoと2つのTLC5940ICを使用します。 TLC5940は、PWM出力を提供する16チャネルLEDドライバです。このICをArduinoに接続して使用する方法の詳細については、私の特定のArduinoおよびTLC5940チュートリアルを参照してください。

このArduinoプロジェクトに必要なコンポーネント

コンポーネントは、以下のいずれかのサイトから入手できます:

  • ArduinoNano………………………..
  • 超高輝度赤色LED……………
  • スイッチ…………………………………..
  • パワージャック……………………………
  • DC5V>1Aアダプター………………..
  • 2 xTLC5940LEDドライバー………。
  • 2x2K抵抗器……………………..
  • 1uFおよび0.1uFコンデンサ……………
組み立て

ここでは、最初にICソケットとピンヘッダーを所定の位置に挿入し、それらをプロトタイピングPCBにはんだ付けして、ICとArduinoNanoをそれらに接続できるようにします。また、電源用の2つのスロット、または5ボルトのVCCピンとグランドピンを備えた2つの追加のピンヘッダーと、デカップリング用の2つのコンデンサが必要です。

何か間違ったものを接続すると、その多くのワイヤで非常に厄介になる可能性があるため、コンポーネントを接続するときは非常に注意する必要があります。この時点で、Arduinoコードをアップロードして、すべてが正しく接続されていることを確認する必要があります。

Arduinoコード


このプロジェクト用に作成したArduinoコードを見てみましょう。したがって、AlexLeoneによって作成されたTLC5940ライブラリを使用します。このライブラリをダウンロードしてインストールしたら、tlc_config.hファイルを変更し、変数NUM_TLCSの値を直列に接続されたTLC5940 ICの数に変更する必要があります。この場合、値は2です

これで、0から31までのすべてのLEDを簡単にアドレス指定できます。最初に、プログラムに必要ないくつかの変数も定義する必要があります。セットアップセクションでTLCを開始し、ループセクションでプログラムを作成する必要があります。 switchステートメントを使用して、プログラムを9つの異なるステージまたはLEDのライトショーに編成しました。

たとえば、最初の段階を見てみましょう。 0から31までのランダムなINT値を生成し、それらをLEDのアドレスとして使用します。関数Tlc.set()は、どのLEDを点灯させるかを設定するために使用されます。最初のパラメータはLEDのアドレスであり、2番目のパラメータはLEDの輝度の値または0〜4095のPWM値です。ただし、これはLEDをすぐに点灯させるのではなく、どちらを設定するだけです。次にTlc.update()関数を実行するとLEDが点灯します。この「if」ステートメントを使用して、8つのランダムなLEDを点灯した後、第2段階をアクティブにします。次に、もう1つの例、たとえばステージ3を見てみましょう。この「for」ループを使用して、Tlc.update()関数が実行されるときに32個のLEDすべてが点灯するように設定します。 Tlc.clear()関数を使用して0.5秒の遅延の後、すべてのLEDをクリアしてオフにします。同様の方法で、コードを変更して、自分でライトショーを追加することができます。

/*  LED Heart Photo Frame - Arduino Project
 *  Program made by Dejan Nedelkovski,
 *  www.HowToMechatronics.com 
 */

/* TLC5940 Library by Alex Leone, https://code.google.com/archive/p/tlc5940arduino/
 *  You need to modify tlc_config.h located in the TLC5940 library 
 *  and change the value of the variable NUM_TLCS to the numbers of TLC5940 ICs connected
 */

#include "Tlc5940.h" 

int stage = 0;
int randomNumber;
int count = 0;
int brightness = 3500;
int brightUp = 50;
int dir=1;

void setup() {
  Tlc.init();
}

void loop() {
  
  switch(stage) {    
    //-----Stage 1
    case 0:
      randomNumber = (int)random(0,31);
      Tlc.set(randomNumber,4095);
      delay(1500);
      Tlc.update();
      if(count >= 8) { 
        stage = 1;
        count = 0;
      }
      else {
        ++count;
      }
    break;
    //-----Stage 2
    case 1:
      delay(75);
      for(int i=31;i>=0;i--) {
        Tlc.set(i,4095);
        delay(100);
        Tlc.update();
      }
      delay(500);
      Tlc.clear();
      Tlc.update();
      stage = 2;
      delay(500);
    break;
    //-----Stage 3
    case 2:
      for(int i=0;i<=31;i++) {
        Tlc.set(i,4095);
      }
      Tlc.update();
      delay(500);
      Tlc.clear();
      Tlc.update();
      delay(350);
      if(count > 6) { 
        stage = 3;
        count = 0;
      }
      else {
        ++count;
      }
    break;
    //-----Stage 4
    case 3:
      for (int i=0;i<=15;i++) {
        Tlc.set(i,4095);
        Tlc.set(31-i,4095);
        Tlc.update();
        delay(70);
      }
      delay(50);
      for (int i=15;i>=0;i--) {
        Tlc.set(i,0);
        Tlc.set(31-i,0);
        Tlc.update();
        delay(70);
      }
      for (int i=15;i>=0;i--) {
        Tlc.set(i,4095);
        Tlc.set(31-i,4095);
        Tlc.update();
        delay(70);
      }
      for (int i=0;i<=15;i++) {
        Tlc.set(i,0);
        Tlc.set(31-i,0);
        Tlc.update();
        delay(70);
      }
      delay(50);
      
      Tlc.clear();
      Tlc.update();
      delay(100);
      if(count > 1) {
        stage = 4;
        count = 0;
      }
      else {
        ++count;
      }
    break;
    //-----Stage 5
    case 4:
      for (int i=15;i>=count;i--) {
        Tlc.set(32-i,4095);
        Tlc.update();
        delay(5);
        Tlc.set(32-i-1,0);
        Tlc.update();
        delay(5);
        Tlc.set(i,4095);
        Tlc.update();
        delay(5);
        Tlc.set(i+1,0);
        Tlc.update();
        delay(50);
      }
      if(count > 15) {
        Tlc.set(16,4095);
        Tlc.update();
        delay(2000);
        stage = 5;
        count = 0;
      }
      else {
        ++count;
      }
    break;
    //-----Stage 6
    case 5:
      for (int i=0;i<=31;i++) {
        Tlc.set(i,brightness);
        Tlc.update();
      }
      Tlc.update();
      brightness = brightness + brightUp;
      if (brightness>=3500) {
        brightUp=-50;
        ++count;
      }
      if (brightness<=150) {
        brightUp=50;
      }
      if(count > 6) { 
        stage = 6;
        count = 0;
        brightness = 3500;
        Tlc.clear();
        Tlc.update();
      }
      delay(40);
    break;
    //-----Stage 7
    case 6:
      for (int i=0;i<=30;i+=2) {
        Tlc.set(i,4095);
        Tlc.set(i+1,0);        
      }
      Tlc.update();
      delay(500);
      for (int i=0;i<=30;i+=2) {
        Tlc.set(i,0);
        Tlc.set(i+1,4095);       
      }
      Tlc.update();
      delay(500); 
      if(count > 20) {
        stage = 7;
        count = 0;
      }
      else {
        ++count;
      }
    break;
    //-----Stage 8
    case 7:
      for(int i=31;i>=16;i--) {
        Tlc.clear();
        Tlc.update();
        delay(2);
        Tlc.set(i,4095);
        Tlc.set(i+1,2000);
        Tlc.set(i+2,1000);
        Tlc.set(i+3,500);
        Tlc.set(i+4,300);
        Tlc.set(i+5,200);
        Tlc.set(i+6,100);
        Tlc.set(i+7,50);
        Tlc.set(i+8,0);

        Tlc.set(i-16,4095);
        Tlc.set(i-15,2000);
        Tlc.set(i-14,1000);
        Tlc.set(i-13,500);
        Tlc.set(i-12,300);
        Tlc.set(i-11,200);
        Tlc.set(i-10,100);
        Tlc.set(i+-9,50);
        Tlc.set(i-8,0);
        
        Tlc.update();
        delay(50); 
      }
      if(count > 8) {
        for(int i=31;i>=0;i--) {
        Tlc.set(i,4095);
        Tlc.update();
        delay(50);
        }
        stage = 8;
        count = 0;
      }
      else {
        ++count;
      }
    break;
    //-----Stage 9
    case 8:
      for(int i=31;i>=0;i--) {
        Tlc.set(i+8,4095);
        Tlc.set(i+7,2000);
        Tlc.set(i+6,1000);
        Tlc.set(i+5,500);
        Tlc.set(i+4,300);
        Tlc.set(i+3,200);
        Tlc.set(i+2,100);
        Tlc.set(i+1,50);
        Tlc.set(i,0);
        Tlc.update();
        delay(50);
      }
      for(int i=31;i>=0;i--) {
        Tlc.set(i,4095);
        }
      Tlc.update();
      delay(10);
      if(count > 8) {
        delay(8000);
        Tlc.clear();
        Tlc.update();
        stage = 0;
        count = 0;
      }
      else {
        ++count;
      }
    break;
      
  }
}Code language: Arduino (arduino)
ファイナルタッチ

プログラミングが完了し、すべてが正常に機能することがわかったら、LEDをファイバーボードに固定する必要があります。これは、グルーガンを使用して行いました。次に、グルーガンを使用して電子機器用のカバーボックスを作成し、さらに4枚のファイバーボードをサイズに合わせてカットする必要があります。

あとは、スイッチからの電力線とフォトフレームのファイバーボードに挿入されている電源ジャックを接続し、写真を追加して、ボックス全体をフォトフレームに固定するだけです。

ここでは、LEDハートフォトフレームの完全なデモビデオを見ることができます。

以下のコメントセクションでお気軽に質問してください!


製造プロセス

  1. DIY LUMAZOID Arduino Music Visualiser
  2. Arduinoを使用したDIY赤外線ハートビートセンサー
  3. 可聴周波数検出器
  4. LEDを制御するBluetoothを搭載したArduino!
  5. Tech-TicTacToe
  6. ArduinoとNokia5110ディスプレイを備えたDIY電圧計
  7. Arduino Quadruped
  8. Arduinoカウントダウンタイマー
  9. ArduinoRGBカラーミキサー
  10. DIY ArduinoRADIONICSトリートメントマシン
  11. RCポルシェカー(Arduinoプロジェクト)