Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

USB Propeller LED Fan Clock - Diagrama de circuito y código de proyecto

Reloj analógico con ventilador de luz LED USB con Arduino NANO:código de proyecto y diagrama de circuito con función de ajuste de hora

Si ha visto el video del famoso dispositivo de Reloj con ventilador de luz LED Mini USB, prepárese, ya que diseñaremos el mismo reloj analógico de luz LED basado en Arduino NANO, sensor de pasillo , resistencias, batería, motor de CC y LED.

Los LED girarán en movimiento circular y mostrarán un reloj analógico en la pantalla de hélice con las tres manecillas para hora, minuto y segundo respectivamente, así como la forma redondeada (circular) como un reloj de pulsera o de pared ordinario.

Lo mejor de este proyecto es que puede cambiar la configuración de tiempo para minutos y segundos cargando el código fuente al Arduino NANO a través de un cable USB. Veamos cómo hacerlo.

Revise el Gadget de LED Light FAN Clock

Componentes requeridos:

Diagrama de cableado y circuito

A continuación se muestra el diagrama de circuito proporcionado para el reloj analógico con ventilador LED de hélice USB. Si desea hacer el mismo proyecto con una función de configuración de tiempo, consulte el segundo diagrama de circuito que se encuentra en la parte inferior de esta publicación.

Procedimiento:

  1. Corte un pequeño trozo de placa PCB según el circuito.
  2. Inserte un LED verde en los orificios con la pata larga del lado izquierdo. Ahora, desde el lado de cobre, doble sus patas hacia un lado (LED verdes, es decir, LED 12 - LED 16 vía R12 a R16 y A5 a A1 respectivamente).
  3. De la misma manera, inserte los LED rojos restantes (LED 1 - LED 11 vía R1 a R11 y D2 a D12 respectivamente).
  4. Inserte el LED azul sobre el LED verde como se muestra en la figura (LED azul 17 a través de R17 y A7). Conecte R17 como 2.2kΩ y una el cátodo de este LED al cátodo de otros LED. Ahora, conecta la pata positiva de este Led a un extremo de la resistencia R17 y el otro extremo al pin Arduino +5V.
  5. Todas las conexiones de cátodo de los LED están unidas. Corte el exceso de cables si es necesario.
  6. Ahora inserte las resistencias y doble los cables de la misma manera que lo hizo con los LED. Corte los cables adicionales en consecuencia.
  7. Ahora suelde los componentes de acuerdo con el diagrama del circuito.
  8. Ahora, suelde los conectores al Arduino NANO.
  9. Conecte un cable del cátodo común de los LED al pin Arduino GND.

Conecte el cable de las resistencias al pin digital "D" de Arduino y al pin analógico "A" de la siguiente manera:

Conecte el sensor Hall de la siguiente manera:

Como toque final:

  1. Conecte la batería de 3,7 V y 240 mAh de acuerdo con el circuito y no olvide agregar un interruptor deslizante de un solo polo en el cable positivo para el funcionamiento de encendido y apagado del circuito.
  2. Ahora, monte todo el proyecto en un aglomerado con la ayuda de un motor de CC de juguete. Tenga en cuenta que si usa un motor potente para alta velocidad, puede usar una batería de 9 V a 12 V en su lugar.
  3. Finalmente, cargue el código del proyecto (que figura a continuación) cable USB viva y encienda el circuito. El ventilador mostrará el reloj con luz LED mientras esté en movimiento de hélice.

Código del proyecto

Puede realizar los cambios necesarios en el siguiente código fuente del reloj del ventilador LED USB y cargarlo al Arduino NANO a través del cable USB si es necesario.

Código vía:hobbyprojects

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);
  }

¿Cómo cambiar la configuración de la hora en el reloj del ventilador LED?

Para IR básico Receptor con el Circuito Principal

Componentes necesarios:

Simplemente conecte el R19 con el primer LED IR (cerca del LED n.° 13 para la configuración de los minutos) y el R20 con el segundo IR (cerca del LED n.° 16 para la configuración de la hora). Conecte el común de los LED IR y ambas resistencias al pin GND y 5V de Arduino NANO respectivamente. Finalmente, conecte el cable de puente del pin A7 entre R19 y el segundo IR. Haz lo mismo para el pin A6 a R20 y el primer IR.

Para control remoto IR básico  Transmisor

Componentes necesarios:

Para hacer un transmisor de control remoto IR simple para configurar y controlar las funciones de configuración de tiempo en el reloj del ventilador LED USB, simplemente conecte todos los componentes en serie (es decir, batería de 9 V, LED IR , resistencia de 1k ohm y un interruptor táctil en el terminal positivo). Este transmisor se utilizará para colocar y orientar el LED n.° 13 y el LED n.° 16 para ajustar la hora.

El siguiente código se usa para cambiar y ajustar el eje de horas y minutos (manecillas de minutos y horas en relojes de pared ordinarios y relojes analógicos) del reloj con ventilador LED USB analógico.

Compruebe la salida del circuito del detector de infrarrojos con el monitor serie Arduino. Por ejemplo, la lectura con luz ambiental normal es> 500 y la lectura con luz IR es <500. Por lo tanto, puede cambiar el código o los valores aquí según los sensores utilizados.


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

Para configurar la manecilla de los minutos, apunte el control remoto IR al marcador de minutos y presione el botón del control remoto. Para configurar la manecilla de la hora, apunte el control remoto IR al fabricante de la hora y presione el botón del control remoto.

Vea el video:

Recursos:

Gadget de reloj FAN con luz LED

Kits y componentes para este proyecto

Arduino NANO para este proyecto


Tecnología Industrial

  1. Secuenciador LED
  2. Reloj de visión pov de Arduino
  3. Reloj maestro
  4. Tech-TicTacToe
  5. Arduino Cuadrúpedo
  6. Temporizador de cuenta atrás de Arduino
  7. Reloj Flip Arduino de matriz de un solo LED
  8. RC Porsche Car (Proyecto Arduino)
  9. Trackpad USB controlado por Arduino
  10. Detección de color Arduino
  11. 230 V 50 Hz CA (o 110 V 60 Hz) Diagrama de circuito de LÁMPARA NOCTURNA potente LED de funcionamiento principal.