Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

LED-Herz-Fotorahmen mit Arduino bauen – Schritt-für-Schritt DIY-Anleitung

In diesem Arduino-Projekt zeigen wir, wie Sie einen beeindruckenden LED-Herz-Fotorahmen mit Arduino bauen. Sehen Sie das Video oder lesen Sie die Anleitung unten.

Auf den ersten Blick wirkt er wie ein gewöhnlicher Fotorahmen, aber beim Betätigen des Schalters auf der Rückseite verwandelt er sich in etwas Besonderes. Der Bau macht Spaß und ist ein perfektes Geschenk zum Valentinstag, Geburtstag oder Jahrestag. Los geht’s!

Vorbereitung des Fotorahmens


LED-Herz-Fotorahmen mit Arduino bauen – Schritt-für-Schritt DIY-Anleitung

Zunächst benötigen Sie einen einfachen 18 × 13 cm Fotorahmen und eine Faserplatte in Rahmengröße, in die wir Löcher für die LEDs bohren. Drucken Sie eine Herzform mit 32 LEDs als Bohrschablone aus. Bohren Sie die Löcher mit einem Bohrer.

LED-Herz-Fotorahmen mit Arduino bauen – Schritt-für-Schritt DIY-Anleitung

Nach dem Bohren setzen Sie alle LEDs von derselben Seite ein, wobei die Anode (längeres Beinchen) nach außen zeigt, damit sie später zusammengebogen und verlötet werden können.

LED-Herz-Fotorahmen mit Arduino bauen – Schritt-für-Schritt DIY-Anleitung

Nach dem Verlöten prüfen Sie, ob alle LEDs funktionieren: Verbinden Sie 5 V über einen 220-Ohm-Widerstand mit den Anoden und testen Sie jede LED einzeln mit Masse.

Schaltplan


Hier ist der Schaltplan des Projekts; darunter finden Sie die vollständige Komponentenliste. Wir verwenden einen Arduino Nano und zwei TLC5940-ICs zur LED-Ansteuerung. Der TLC5940 ist ein 16-Kanal-LED-Treiber mit PWM-Ausgängen. Details zur Ansteuerung finden Sie in meinem TLC5940-Tutorial.

LED-Herz-Fotorahmen mit Arduino bauen – Schritt-für-Schritt DIY-Anleitung

Benötigte Komponenten


Montage


Zuerst setzen wir die IC-Sockel und Pin-Header auf die Lochrasterplatine und löten sie fest, damit wir die ICs und den Arduino Nano aufstecken können. Zusätzlich brauchen wir zwei weitere Pin-Header für 5 V und GND sowie zwei Entkopplungskondensatoren.

LED-Herz-Fotorahmen mit Arduino bauen – Schritt-für-Schritt DIY-Anleitung

Achten Sie auf saubere Verdrahtung – bei vielen Kabeln entsteht schnell Unordnung. Laden Sie nun den Arduino-Code hoch, um die Verdrahtung zu prüfen.

LED-Herz-Fotorahmen mit Arduino bauen – Schritt-für-Schritt DIY-Anleitung

Arduino-Code


Der Code nutzt die TLC5940-Bibliothek von Alex Leone. Nach Installation der Bibliothek muss in der Datei tlc_config.h der Wert NUM_TLCS auf 2 gesetzt werden (zwei ICs in Reihe). Damit können wir alle 32 LEDs (0–31) ansprechen.

LED-Herz-Fotorahmen mit Arduino bauen – Schritt-für-Schritt DIY-Anleitung

Im Setup initialisieren wir die TLCs; im Loop läuft das Programm in 9 verschiedenen Lichtshow-Stufen über eine switch-Anweisung.

Beispiel Stufe 1: Zufällige INT-Werte (0–31) als LED-Adressen. Tlc.set(adresse, 4095) setzt die LED auf maximale Helligkeit (PWM 0–4095). Tlc.update() führt die Änderung aus. Nach 8 zufälligen LEDs wechselt ein if zur Stufe 2.

Beispiel Stufe 3: Eine for-Schleife setzt alle 32 LEDs, Tlc.update() aktiviert sie, nach 500 ms werden sie mit Tlc.clear() und Tlc.update() wieder gelöscht. Sie können den Code erweitern und eigene Lichtshows hinzufügen.

/* 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;
  }
}

Letzter Schliff


Nach erfolgreicher Programmierung sichern wir die LEDs auf der Faserplatte mit Heißkleber. Dann bauen wir eine Abdeckbox für die Elektronik aus 4 weiteren Faserplattenstücken, wieder mit Heißkleber.

LED-Herz-Fotorahmen mit Arduino bauen – Schritt-für-Schritt DIY-Anleitung

Zum Schluss verbinden wir die Stromleitungen von Schalter und Strombuchse (in der Rahmen-Rückseite eingesetzt), legen das Foto ein, befestigen die Box am Rahmen – fertig!

LED-Herz-Fotorahmen mit Arduino bauen – Schritt-für-Schritt DIY-Anleitung

Hier sehen Sie das vollständige Demo-Video des LED-Herz-Fotorahmens.

Fragen gerne in den Kommentaren!

Herstellungsprozess

  1. Eigenen LUMAZOID bauen: DIY Arduino Musik-Visualisierer
  2. DIY Infrarot-Herzschlag-Sensor mit Arduino: Schritt-für-Schritt-Anleitung
  3. Arduino Audio-Frequenz-Detektor – Lauteste Schallpeaks mit hochsensiblem Modul messen
  4. LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
  5. Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
  6. DIY-Voltmeter mit Arduino und Nokia 5110 Display – Schritt-für-Schritt-Anleitung
  7. Intelligenten Arduino-Vierbeiner-Roboter bauen: Schritt-für-Schritt-Anleitung
  8. Zuverlässigen Arduino-Countdown-Timer mit SparkFun 7-Segment-Display bauen
  9. Arduino RGB-LED-Farbmischer – Einsteigerfreundliches DIY-Projekt
  10. DIY Radionik EMR-Behandlungsgerät mit Arduino Nano – Kritische Betrachtung