Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DIY LED Hart Fotolijst – Arduino Project

In dit Arduino-project laat ik je zien hoe je een geweldige LED-hartfotolijst kunt maken met Arduino. Je kunt de volgende video bekijken of het geschreven artikel hieronder lezen voor meer informatie.

Op het eerste gezicht lijkt het een gewone fotolijst, maar zodra je op de schakelaar aan de achterkant klikt, verandert het in een buitengewone fotolijst. Het bouwen van dit Arduino-project is erg leuk en het kan een perfect valentijns-, verjaardags- of jubileumcadeau zijn voor uw dierbaren. Dus laten we beginnen met bouwen

Voorbereiding fotolijst


Eerst hebben we een eenvoudige fotolijst van 18 x 13 cm nodig en een op maat gesneden houtvezelplaat waarop gaten worden gemaakt voor het plaatsen van de LED's. Vervolgens moeten we een hartvorm tekenen en afdrukken met 32 ​​LED's die als patroon zullen worden gebruikt. De gaten voor de LED's maken we met een boor.

Zodra we klaar zijn met het boren van de gaten, beginnen we met het plaatsen van de LED's. We moeten alle LED's aan dezelfde kant plaatsen, met de anode of de langere kabel naar buiten gericht, zodat we ze kunnen buigen en later de anodes van alle LED's aan elkaar kunnen solderen.

Nadat we alle LED's hebben gesoldeerd, moeten we controleren of ze allemaal goed werken. Daarvoor moeten we de positieve 5 volt VCC-pin verbinden met de anodes van de LED's via een 220 Ohm-weerstand en met behulp van de aardingspin controleren of elke LED gaat branden.

Circuitschema's


Hier zijn de circuitschema's van dit project en u kunt een volledige lijst met componenten die nodig zijn voor dit project eronder vinden. We zullen dus de Arduino Nano en de twee TLC5940 IC's gebruiken voor het aansturen van de LED's. De TLC5940 is een 16-kanaals LED-driver die PWM-uitgangen biedt. U kunt meer details vinden over het aansluiten en gebruiken van dit IC met de Arduino in mijn specifieke Arduino- en TLC5940-zelfstudie.

Benodigde componenten voor dit Arduino-project


U kunt de componenten van een van de onderstaande sites downloaden:

  • Arduino Nano……………………..
  • Ultra heldere rode LED's………… 
  • Schakelaar……………………………….. 
  • Stroomaansluiting………………………… 
  • DC 5V>1A-adapter……………….. 
  • 2 x TLC5940 LED-stuurprogramma's…….
  • 2 x 2K Weerstanden …………………..
  • 1uF &0.1uF condensatoren ……………

Montage


Hier zullen we eerst de IC-sockets en de pin-headers op hun plaats plaatsen en ze op de prototyping-PCB solderen, zodat we de IC's en de Arduino Nano eraan kunnen bevestigen. We hebben ook twee extra pin-headers nodig met een paar slots voor de voeding, of de 5 Volt VCC en de Ground-pinnen, evenals twee condensatoren voor ontkoppeling.

We moeten heel voorzichtig zijn bij het aansluiten van de componenten, omdat het erg rommelig kan worden met zoveel draden als we iets verkeerd aansluiten. Op dit punt moeten we de Arduino-code uploaden om er zeker van te zijn dat we alles goed hebben aangesloten.

Arduino-code


Laten we eens kijken naar de Arduino-code die ik voor dit project heb gemaakt. We zullen dus de TLC5940-bibliotheek gebruiken die is gemaakt door Alex Leone. Zodra we deze bibliotheek hebben gedownload en geïnstalleerd, moeten we het tlc_config.h-bestand wijzigen en de waarde van de variabele NUM_TLCS wijzigen in het aantal TLC5940 IC's die in serie zijn aangesloten en in ons geval is die waarde 2

Als dit klaar is, kunnen we nu gemakkelijk alle LED's van 0 tot 31 adresseren. In het begin moeten we ook enkele variabelen definiëren die nodig zijn voor het programma. In de setup-sectie moeten we de TLC's starten en in de loop-sectie het programma maken. Ik organiseerde het programma in 9 verschillende fasen of lichtshows van de LED's met behulp van de schakelaarverklaring.

Laten we bijvoorbeeld eens kijken naar de eerste fase. We genereren willekeurige INT-waarden van 0 tot 31 en gebruiken deze als adressen voor de LED's. De functie Tlc.set() wordt gebruikt om in te stellen welke LED we oplichten. De eerste parameter is het adres van de LED en de tweede parameter is de waarde van de helderheid van de LED of de PWM-waarde die loopt van 0 tot 4095. Dit zal echter niet meteen de LED oplichten, het stelt alleen in welke De LED gaat vervolgens branden wanneer de functie Tlc.update() wordt uitgevoerd. Met behulp van deze "if"-verklaring activeren we de tweede fase na het oplichten van 8 willekeurige LED's. Laten we nu nog een voorbeeld bekijken, laten we zeggen fase 3. Met behulp van deze "for"-lus stellen we alle 32 LED's in om op te lichten wanneer de Tlc.update()-functie wordt uitgevoerd. Na een vertraging van een halve seconde met behulp van de Tlc.clear()-functie, wissen en schakelen we alle LED's uit. Op dezelfde manier kun je de code aanpassen en zelf meer lichtshows toevoegen.

/*  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)

Laatste aanraking


Als we klaar zijn met programmeren en weten dat alles goed werkt, moeten we de LED's op de vezelplaat bevestigen en dat deed ik met een lijmpistool. Dan moeten we een afdekdoos voor de elektronica maken met een lijmpistool en nog 4 stukken vezelplaat op maat gesneden.

Wat nu nog rest, is om de stroomkabels die van de schakelaar komen en de stroomaansluiting die in de vezelplaat van de fotolijst zijn gestoken, aan te sluiten, de foto toe te voegen, de hele doos op de fotolijst te bevestigen en we zijn klaar!

Hier kunt u de volledige demovideo van de LED Heart Photo Frame bekijken.

Stel gerust een vraag in de opmerkingen hieronder!


Productieproces

  1. DIY LUMAZOID Arduino Music Visualiser
  2. DIY infrarood hartslagsensor met Arduino
  3. Audiofrequentiedetector
  4. Arduino met Bluetooth om een ​​LED te bedienen!
  5. Tech-TicTacToe
  6. DIY voltmeter met Arduino en een Nokia 5110-display
  7. Arduino Quadruped
  8. Arduino Countdown Timer
  9. Arduino RGB-kleurenmixer
  10. DIY Arduino RADIONICS-behandelingsmachine
  11. RC Porsche Car (Arduino Project)