산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DIY LED 하트 액자 – Arduino 프로젝트

<메인 클래스="사이트 메인" id="메인">

이 Arduino 프로젝트에서는 Arduino를 사용하여 멋진 LED 하트 액자를 만드는 방법을 보여 드리겠습니다. 자세한 내용은 다음 동영상을 보거나 아래에 작성된 기사를 읽어보세요.

얼핏 보면 평범한 액자처럼 보이지만 뒷면의 스위치를 누르면 색다른 액자로 변신한다. 이 Arduino 프로젝트를 구축하는 것은 매우 재미있으며 사랑하는 사람을 위한 완벽한 발렌타인, 생일 또는 기념일 선물이 될 수 있습니다. 이제 빌드를 시작해 보겠습니다.

포토 프레임 준비


먼저 간단한 18 x 13cm 사진 프레임과 LED를 삽입하기 위한 구멍을 만들 프레임 크기로 자른 섬유판이 필요합니다. 그런 다음 패턴으로 사용할 32개의 LED로 하트 모양을 그리고 인쇄해야 합니다. 드릴로 LED 구멍을 뚫겠습니다.

<그림 클래스="aligncenter">

구멍 뚫기가 끝나면 LED 삽입을 시작합니다. 모든 LED를 같은 면에 삽입해야 합니다. 양극 또는 더 긴 리드가 바깥쪽을 향하도록 하여 LED를 구부린 다음 나중에 모든 LED의 양극을 함께 납땜할 수 있습니다.

<그림 클래스="aligncenter">

모든 LED를 납땜했으면 모든 LED가 제대로 작동하는지 확인해야 합니다. 이를 위해 220 Ohms 저항을 통해 양극 5볼트 VCC 핀을 LED의 양극에 연결하고 접지 핀을 사용하여 각 LED가 켜지는지 확인해야 합니다.

회로도


다음은 이 프로젝트의 회로도이며 아래에서 이 프로젝트에 필요한 구성요소의 전체 목록을 찾을 수 있습니다. 그래서 우리는 LED를 제어하기 위해 Arduino Nano와 두 개의 TLC5940 IC를 사용할 것입니다. TLC5940은 PWM 출력을 제공하는 16채널 LED 드라이버입니다. 내 특정 Arduino 및 TLC5940 자습서에서 이 IC를 Arduino와 연결하고 사용하는 방법에 대해 자세히 알아볼 수 있습니다.

이 Arduino 프로젝트에 필요한 구성 요소


구성요소는 아래 사이트에서 얻을 수 있습니다.

조립


여기에서는 먼저 IC 소켓과 핀 헤더를 제자리에 삽입하고 IC와 Arduino Nano를 부착할 수 있도록 프로토타이핑 PCB에 납땜합니다. 또한 전원을 위한 두 개의 슬롯이 있는 두 개의 추가 핀 헤더 또는 5V VCC 및 접지 핀과 디커플링을 위한 두 개의 커패시터가 필요합니다.

<그림 클래스="aligncenter">

잘못 연결하면 너무 많은 전선으로 인해 매우 지저분해질 수 있으므로 구성 요소를 연결할 때 매우 주의해야 합니다. 이 시점에서 우리는 모든 것이 제대로 연결되었는지 확인하기 위해 Arduino 코드를 업로드해야 합니다.

<그림 클래스="aligncenter">

Arduino 코드


이 프로젝트를 위해 만든 Arduino 코드를 살펴보겠습니다. 그래서 우리는 Alex Leone이 만든 TLC5940 라이브러리를 사용할 것입니다. 이 라이브러리를 다운로드하여 설치하면 tlc_config.h 파일을 수정하고 변수 NUM_TLCS의 값을 직렬로 연결된 TLC5940 IC의 수로 변경해야 합니다. 이 경우 값은 2입니다.

<그림 클래스="aligncenter">

이 작업이 완료되면 이제 0에서 31까지의 모든 LED를 쉽게 지정할 수 있습니다. 처음에는 프로그램에 필요한 몇 가지 변수도 정의해야 합니다. 설정 섹션에서 TLC를 시작하고 루프 섹션에서 프로그램을 만들어야 합니다. 프로그램을 9개의 다른 단계로 구성하거나 switch 문을 사용하여 LED의 라이트 쇼를 구성했습니다.

예를 들어 첫 번째 단계를 살펴보겠습니다. 0에서 31 사이의 임의의 INT 값을 생성하고 이를 LED의 주소로 사용합니다. Tlc.set() 함수는 어떤 LED를 켜는지 설정하는 데 사용됩니다. 첫 번째 매개변수는 LED의 주소이고 두 번째 매개변수는 LED의 밝기 값 또는 0에서 4095 사이의 PWM 값입니다. 그러나 이것은 LED를 즉시 켜지지 않고 다음을 설정합니다. 다음에 Tlc.update() 함수가 실행될 때 LED가 켜집니다. 이 "if" 문을 사용하여 8개의 임의 LED를 켠 후 두 번째 단계를 활성화합니다. 이제 한 가지 예를 더 살펴보겠습니다. 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개를 사용하여 전자 제품용 덮개 상자를 만들어야 합니다.

<그림 클래스="aligncenter">

이제 스위치에서 나오는 전원선과 포토 프레임의 섬유판에 삽입된 전원 잭을 연결하고 사진을 추가하고 전체 상자를 포토 프레임에 고정하는 일만 남았습니다!

<그림 클래스="aligncenter">

여기에서 LED 하트 액자의 전체 데모 비디오를 볼 수 있습니다.

아래 댓글 섹션에서 언제든지 질문하세요!


제조공정

  1. DIY LUMAZOID Arduino 뮤직 비주얼라이저
  2. Arduino를 사용한 DIY 적외선 심장 박동 센서
  3. 오디오 주파수 감지기
  4. Bluetooth가 탑재된 Arduino로 LED 제어!
  5. Tech-TicTacToe
  6. Arduino 및 Nokia 5110 디스플레이가 있는 DIY 전압계
  7. Arduino Quadruped
  8. Arduino 카운트다운 타이머
  9. Arduino RGB 컬러 믹서
  10. DIY Arduino RADIONICS 치료 기계