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

USB 프로펠러 LED 팬 시계 – 회로도 및 프로젝트 코드

Arduino NANO를 사용하는 USB LED 조명 팬 아날로그 시계 – 시간 설정 기능이 있는 프로젝트 코드 및 회로도

Mini USB LED 조명 팬 시계의 유명한 가제트의 비디오를 본 적이 있다면 준비하십시오. Arduino NANO, 홀 센서를 기반으로 동일한 LED 조명 아날로그 시계를 설계할 것입니다. , 저항기, 배터리, DC 모터 및 LED.

LED가 원형 동작으로 회전하고 프로펠러 디스플레이에 아날로그 시계가 각각 시, 분, 초에 대한 세 개의 바늘과 다음과 같은 둥근(원형) 모양으로 표시됩니다. 일반 손목시계나 벽시계.

이 프로젝트의 가장 좋은 점은 USB 케이블을 통해 Arduino NANO에 소스 코드를 업로드하여 분과 초 모두 시간 설정을 변경할 수 있다는 것입니다. 방법을 알아보겠습니다.

LED 조명 FAN 시계의 가제트 확인

필수 구성요소:

배선 및 회로도

다음은 USB 프로펠러 LED 팬 아날로그 시계의 회로도입니다. 시간 설정 기능으로 같은 프로젝트를 만들고 싶다면 이 포스트 하단에 있는 두 번째 회로도를 확인하세요.

절차:

  1. 회로에 따라 PCB 기판을 작게 자릅니다.
  2. 왼쪽의 긴 다리가 있는 구멍에 녹색 LED를 삽입합니다. 이제 구리 쪽에서 다리를 한쪽으로 구부립니다(녹색 LED, 즉 LED 12 – R12에서 R16 및 A5에서 A1을 통해 각각 LED 16).
  3. 같은 방법으로 나머지 빨간색 LED를 삽입합니다(각각 R1에서 R11 및 D2에서 D12를 통해 LED 1 – LED 11).
  4. 그림과 같이 녹색 LED 위에 파란색 LED를 삽입합니다(R17 및 A7을 통해 파란색 LED 17). R17을 2.2kΩ으로 연결하고 이 LED의 음극을 다른 LED의 음극에 연결합니다. 이제 이 Led의 양극 다리를 저항 R17의 한쪽 끝에 연결하고 다른 쪽 끝을 Arduino +5V 핀에 연결합니다.
  5. LED의 모든 음극 연결은 함께 연결됩니다. 필요한 경우 초과 리드를 잘라냅니다.
  6. 이제 저항을 삽입하고 LED와 동일하게 리드를 구부립니다. 그에 따라 여분의 리드를 잘라냅니다.
  7. 이제 회로도에 따라 부품을 납땜합니다.
  8. 이제 Arduino NANO에 커넥터를 납땜합니다.
  9. LED 공통 음극의 전선을 Arduino GND 핀에 연결합니다.

저항에서 Arduino 디지털 핀 "D" 및 아날로그 핀 "A"에 다음과 같이 와이어를 연결합니다.

홀 센서를 다음과 같이 연결합니다.

마지막으로:

  1. 3.7V, 240mAh 배터리를 회로에 따라 연결하고 회로의 ON 및 OFF 작동을 위해 양극 리드에 단극 토글 슬라이드 스위치를 추가하는 것을 잊지 마십시오.
  2. 이제 장난감 DC 모터를 사용하여 전체 프로젝트를 마분지에 장착합니다. 고속을 위해 강력한 모터를 사용하는 경우 대신 9V~12V 배터리를 사용할 수 있음을 명심하십시오.
  3. 마지막으로, 프로젝트 코드(아래 참조)를 viva USB 케이블로 업로드하고 회로를 켜십시오. 프로펠러가 움직이는 동안 팬이 LED 조명으로 시계를 표시합니다.

프로젝트 코드

필요한 경우 USB Led 팬 시계의 다음 소스 코드를 변경하고 USB 케이블을 통해 Arduino NANO에 업로드할 수 있습니다.

다음을 통한 코드:취미 프로젝트

int LED1 = 2;
int LED2 = 3;
int LED3 = 4;
int LED4 = 5;
int LED5 = 6;
int LED6 = 7;
int LED7 = 8;
int LED8 = 9;
int LED9 = 10;
int LED10 = 11;
int LED11 = 12;
int LED12 = A1;
int LED13 = A2;
int LED14 = A3;
int LED15 = A4;
int LED16 = A5;

int sensorPin = A0;

int minuteSensor = A7;
int hourSensor = A6;

unsigned int n,ADCvalue,propeller_posn;
unsigned long previousTime = 0;

byte hours = 12;    // set hours
byte minutes = 15;  // set minutes
byte seconds = 00;  // set seconds

int val;

void setup() 
{
  pinMode(LED1,OUTPUT);  
  pinMode(LED2,OUTPUT);  
  pinMode(LED3,OUTPUT);  
  pinMode(LED4,OUTPUT);  
  pinMode(LED5,OUTPUT);  
  pinMode(LED6,OUTPUT);  
  pinMode(LED7,OUTPUT);  
  pinMode(LED8,OUTPUT);  
  pinMode(LED9,OUTPUT);  
  pinMode(LED10,OUTPUT);  
  pinMode(LED11,OUTPUT);  
  pinMode(LED12,OUTPUT);  
  pinMode(LED13,OUTPUT);  
  pinMode(LED14,OUTPUT);  
  pinMode(LED15,OUTPUT);  
  pinMode(LED16,OUTPUT);  
  
  pinMode(sensorPin,INPUT_PULLUP);   
  
  if(hours == 12)
  hours = 0;

//****************************************
  // Uncomment these lines for IR sensor testing
/* 
    Serial.begin(9600);

    while(1)
  {
    ADCvalue = analogRead(minuteSensor);
    Serial.print("minuteSensor ");
    Serial.println(ADCvalue);
     
    ADCvalue = analogRead(hourSensor);  
    Serial.print("hourSensor   ");
    Serial.println(ADCvalue); 
    
    Serial.println();         
    delay(1000); 
  }
*/
//****************************************  
}

void loop() 
{
    val = digitalRead(sensorPin);
    
    while (val == LOW)
  {
    val = digitalRead(sensorPin);
  }

      
  if (millis() >= (previousTime)) 
  {
     previousTime = previousTime + 1000;
     seconds = seconds+1;
     if (seconds == 60)
     {
        seconds = 0;
        minutes = minutes+1;
     }
     if (minutes == 60)
     {
        minutes = 0;
        hours = hours+1;
     }
     if (hours == 12)
     {
        hours = 0;
     }   
  }  
  
  propeller_posn=30;
  n=0;
  
  while(n < 60)
  {
    
  ADCvalue = analogRead(minuteSensor);
  if(ADCvalue < 500)
  {
  minutes = propeller_posn;
  seconds = 0;
  }

  ADCvalue = analogRead(hourSensor);
  if(ADCvalue < 500)
  {
  hours = propeller_posn/5;
  seconds = 0;
  }
      
  drawMinuteMarker();

  if ((propeller_posn==0) || (propeller_posn==5) || (propeller_posn==10) || (propeller_posn==15) || (propeller_posn==20) || (propeller_posn==25) || (propeller_posn==30) || (propeller_posn==35) || (propeller_posn==40) || (propeller_posn==45) || (propeller_posn==50) || (propeller_posn==55))
  drawHourMarker();
  
  if ((propeller_posn==0) || (propeller_posn==15) || (propeller_posn==30) || (propeller_posn==45))
  drawQuarterMarker(); 
  
  if((propeller_posn == hours*5) || (( propeller_posn == 0 ) && (hours == 0)))
  drawHoursHand();
  
  if(propeller_posn == minutes)
  drawMinutesHand();   
  
  if(propeller_posn == seconds)
  drawSecondsHand();
  
  delayMicroseconds(100);     // for LED pixel width   (change the value according to motor speed. Increase for low speed, decrease for high speed motor)
  
  displayClear(); 

  drawInner_Circle();
 
  delayMicroseconds(450);   // for the gap between LED pixels/minutes markers  (change the value according to motor speed. Increase for low speed, decrease for high speed motor)
  
  n++;
  propeller_posn++;
  if(propeller_posn == 60)
  propeller_posn=0;
  }
  
    val = digitalRead(sensorPin);  
    
    while (val == HIGH)
    {
    val = digitalRead(sensorPin); 
    }     
}

//=========================

void displayClear()
  {
  digitalWrite(LED1,LOW);
  digitalWrite(LED2,LOW);
  digitalWrite(LED3,LOW);
  digitalWrite(LED4,LOW);
  digitalWrite(LED5,LOW);
  digitalWrite(LED6,LOW);
  digitalWrite(LED7,LOW);
  digitalWrite(LED8,LOW);
  digitalWrite(LED9,LOW);
  digitalWrite(LED10,LOW);
  digitalWrite(LED11,LOW);
  digitalWrite(LED12,LOW);
  digitalWrite(LED13,LOW);
  digitalWrite(LED14,LOW);
  digitalWrite(LED15,LOW);
  digitalWrite(LED16,LOW);  
  }

  void drawMinuteMarker()
  {
  digitalWrite(LED16,HIGH);
  }

  void drawHourMarker()
  {
  digitalWrite(LED15,HIGH);
  digitalWrite(LED14,HIGH); 
  }

  void drawQuarterMarker()
  {
  digitalWrite(LED13,HIGH);
  digitalWrite(LED12,HIGH); 
  }

  void drawHoursHand()
  {
  digitalWrite(LED1,HIGH);
  digitalWrite(LED2,HIGH);
  digitalWrite(LED3,HIGH);
  digitalWrite(LED4,HIGH);
  digitalWrite(LED5,HIGH);
  digitalWrite(LED6,HIGH);
  digitalWrite(LED7,HIGH);
  }

  void drawMinutesHand()
  { 
  digitalWrite(LED1,HIGH);
  digitalWrite(LED2,HIGH);
  digitalWrite(LED3,HIGH);
  digitalWrite(LED4,HIGH);
  digitalWrite(LED5,HIGH);
  digitalWrite(LED6,HIGH);
  digitalWrite(LED7,HIGH);
  digitalWrite(LED8,HIGH);
  digitalWrite(LED9,HIGH);
  }

  void drawSecondsHand()
  { 
  digitalWrite(LED1,HIGH);
  digitalWrite(LED2,HIGH);
  digitalWrite(LED3,HIGH);
  digitalWrite(LED4,HIGH);
  digitalWrite(LED5,HIGH);
  digitalWrite(LED6,HIGH);
  digitalWrite(LED7,HIGH);
  digitalWrite(LED8,HIGH);
  digitalWrite(LED9,HIGH);
  digitalWrite(LED10,HIGH);
  digitalWrite(LED11,HIGH);  
  }  

  void drawInner_Circle()
  {
  digitalWrite(LED1,HIGH);  
  delayMicroseconds(30);
  digitalWrite(LED1,LOW);
  }

LED 팬 시계에서 시간 설정을 변경하는 방법은 무엇입니까?

기본 IR의 경우 수신자 주 회로 포함

필요한 구성요소:

R19를 첫 번째 IR LED(분 설정의 경우 LED#13 근처)에 연결하고 R20을 두 번째 IR(시간 설정의 경우 LED#16 근처)에 연결하기만 하면 됩니다. IR LED의 커먼과 두 저항을 Arduino NANO의 GND와 5V 핀에 각각 연결합니다. 마지막으로 A7 핀의 점퍼선을 R19와 두 번째 IR 사이에 연결합니다. A6 핀에 대해 R20 및 첫 번째 IR에 대해 동일한 작업을 수행합니다.

기본 IR 원격 제어용  송신기

필요한 구성요소:

USB LED 팬 시계의 시간 설정 기능을 설정하고 제어하는 ​​간단한 IR 리모콘 송신기를 만들려면 모든 구성 요소를 직렬로 연결하기만 하면 됩니다(예:9V 배터리, IR LED , 1k 옴 저항 및 양극 단자의 택트 스위치). 이 송신기는 시간을 조정하기 위해 LED#13 및 LED#16을 배치하고 마주보는 데 사용됩니다.

다음 코드는 아날로그 USB led 팬 시계의 시 및 분 스핀들(일반 벽시계 및 아날로그 시계의 분 및 시침)을 변경하고 조정하는 데 사용됩니다.

Arduino 직렬 모니터를 사용하여 IR 감지기 회로의 출력을 확인합니다. 예를 들어, 일반 실내 조명으로 판독하면> 500이고 IR 조명으로 판독하면 <500입니다. 따라서 여기에서 사용하는 센서에 따라 코드 또는 값을 변경할 수 있습니다.


propeller_posn=30;
  n=0;
  
  while(n < 60)
  {
    
  ADCvalue = analogRead(minuteSensor);
  if(ADCvalue < 500)
  {
  minutes = propeller_posn;
  seconds = 0;
  }

  ADCvalue = analogRead(hourSensor);
  if(ADCvalue < 500)
  {
  hours = propeller_posn/5;
  seconds = 0;
  }

분침을 설정하려면 IR 리모컨을 분 마커로 향하게 하고 리모컨 버튼을 누르십시오. 시침을 설정하려면 IR 리모컨을 아워 메이커로 향하게 하고 리모컨 버튼을 누르십시오.

동영상 보기:

리소스:

LED 조명 팬 시계 가제트

이 프로젝트의 키트 및 구성요소

이 프로젝트의 Arduino NANO


산업기술

  1. LED 시퀀서
  2. Arduino 관점 시계
  3. 마스터 시계
  4. Tech-TicTacToe
  5. Arduino Quadruped
  6. Arduino 카운트다운 타이머
  7. 단일 LED 매트릭스 Arduino 플립 시계
  8. RC 포르쉐 자동차(Arduino 프로젝트)
  9. Arduino 제어 USB 트랙패드
  10. 230V 50Hz AC(또는 110V 60Hz) 주동작 LED 강력한 NIGHT LAMP 회로도.