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

Construya un Reloj Ventilador LED USB con Arduino Nano: Diagrama y Código

Reloj Analógico Ventilador LED USB con Arduino NANO — Código y Diagrama con Ajuste de Hora

Si ha visto el video del famoso gadget ventilador LED USB con reloj, prepárese: diseñaremos el mismo reloj analógico con display de hélice basado en Arduino NANO, sensor Hall, resistencias, batería, motor DC y LEDs.

Los LEDs girarán en movimiento circular mostrando un reloj analógico en display de hélice con las tres manecillas (hora, minuto, segundo) y la forma circular como un reloj de pulsera o pared convencional.

Lo mejor: puede cambiar el ajuste de hora (minutos y segundos) subiendo el código fuente al Arduino NANO vía cable USB. Veamos cómo.

Componentes Requeridos

Cableado y Diagrama de Circuito

El siguiente es el diagrama de circuito para el reloj analógico LED ventilador USB. Si quiere el mismo proyecto con ajuste de hora, consulte el segundo diagrama al final.

Procedimiento de Montaje

  1. Corte un trozo pequeño de PCB según el circuito.
  2. Inserte un LED verde en los orificios con la pata larga a la izquierda. Desde el lado de cobre, doble sus patas hacia un lado (LEDs verdes 12-16 vía R12-R16 y A5-A1 respectivamente).
  3. Igual con los LEDs rojos restantes (LED 1-11 vía R1-R11 y D2-D12 respectivamente).
  4. Inserte el LED azul sobre el verde como se muestra (LED azul 17 vía R17 y A7). Conecte R17 = 2.2 kΩ y una el cátodo de este LED al cátodo de los demás. Conecte el ánodo a un extremo de R17 y el otro a pin +5V del Arduino.
  5. Una todas las conexiones de cátodos de los LEDs. Corte patas sobrantes si es necesario.
  6. Inserte las resistencias y doble sus patas igual que los LEDs. Corte el exceso.
  7. Suelde los componentes según el diagrama.
  8. Suelde conectores al Arduino NANO.
  9. Conecte un cable del cátodo común de los LEDs al pin GND del Arduino.

Conecte cables de resistencias a pines digitales "D" y analógicos "A" del Arduino:

Conecte el sensor Hall:

Toques finales:

  1. Conecte la batería 3.7V 240mAh según el circuito y añada interruptor deslizante unipolar en el positivo para ON/OFF.
  2. Monte todo en una placa con motor DC de juguete. Si usa motor potente para alta velocidad, use batería 9V-12V.
  3. Suba el código del proyecto (abajo) vía USB y encienda. El ventilador mostrará el reloj en luz LED durante el movimiento de hélice.

Código del Proyecto

Puede modificar el siguiente código fuente del reloj ventilador LED USB y subirlo al Arduino NANO por USB si lo necesita.

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; //**************************************** // Descomente para test de sensor IR /* 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); // ancho pixel LED (ajuste según velocidad motor. Aumente para baja velocidad, disminuya para alta) displayClear(); drawInner_Circle(); delayMicroseconds(450); // gap entre pixels/marcadores minutos (ajuste según velocidad 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 el Ajuste de Hora en el Reloj Ventilador LED

Para Receptor IR Básico con el Circuito Principal

Componentes Requeridos:

Conecte R19 con el primer LED IR (cerca LED#13 para minutos) y R20 con el segundo IR (cerca LED#16 para horas). Conecte el común de los LEDs IR y ambas resistencias a GND y 5V del Arduino NANO respectivamente. Conecte jumper de pin A7 entre R19 y segundo IR. Igual para pin A6 a R20 y primer IR.

Para Control Remoto IR Básico Transmisor

Componentes Requeridos:

Para hacer un transmisor IR simple para ajustar la hora en el reloj ventilador LED USB, conecte todos los componentes en serie (batería 9V, LED IR, resistencia 1kΩ y pulsador en el positivo). Este transmisor se usa apuntando a LED#13 y LED#16 para ajustar la hora.

El siguiente código se usa para cambiar y ajustar el huso de minutos y horas (manecillas de minutos y horas en reloj analógico común) del reloj analógico USB LED ventilador.

Verifique la salida del circuito detector IR con el Monitor Serial de Arduino. Ejemplo: lectura con luz ambiente normal > 500 y con luz IR < 500. Cambie el código o valores según los sensores usados.

 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 ajustar minutos, apunte el control IR al marcador de minutos y presione el botón. Para horas, apunte al marcador de horas y presione.

Tecnología Industrial

  1. Reloj POV con Arduino: Construye una pantalla LED de persistencia de visión
  2. Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
  3. Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
  4. Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
  5. Construye un Temporizador Regresivo Fiable con Arduino y Pantalla de 7 Segmentos SparkFun
  6. Reloj flip Arduino con matriz LED 8×8: proyecto DIY de reloj en tiempo real
  7. Construye tu Propio Coche RC Porsche con Arduino: Guía Paso a Paso
  8. Trackpad USB DIY con Arduino: Convierte un Touchpad de Portátil Viejo en Dispositivo de Entrada Moderno
  9. Detección de Colores con Arduino Nano y Sensor TCS3200
  10. Construye un Secuenciador LED con Temporizador 555 y Contador 4017 – División de Frecuencia y Antirrebote
  11. Circuito Profesional Lámpara Nocturna LED - Diseño Alimentado Red 230V/50Hz o 110V/60Hz