Si has visto el video del famoso gadget en Reloj divertido con luz LED mini USBbasado en Arduino NANO, sensores de pasillo, resistencias, baterías, motores de CC y LED, diseñaremos el mismo reloj analógico de luz LED, así que prepárate.
El LED gira en un círculo, creando un reloj analógico en una pantalla de hélice con las tres manecillas que representan las horas, los minutos y los segundos, respectivamente, así como la forma redondeada (circular) de un reloj de pared o de muñeca normal.
Lo mejor de este proyecto es que puede cambiar la configuración de tiempo en minutos y segundos cargando el código fuente al Arduino NANO a través de un cable USB. Veamos cómo hacerlo.
A continuación se muestra el esquema del reloj analógico USB Propeller LED Fan. Si desea crear el mismo proyecto con la función de configuración de tiempo, consulte el segundo esquema al final de esta publicación.
Conecte los cables de la resistencia al pin digital ‘D’ de Arduino y al pin analógico ‘A’ de la siguiente manera:
Puede realizar los cambios necesarios en el código fuente del reloj del ventilador LED USB a continuación y cargarlo en el Arduino NANO a través de un cable USB según sea necesario.
int LED1 = 2;
int LED2 = 3;
int LED3 = 4;
int LED4 = 5;
int LED5 = 6;
int LED6 = 7;
int LED7 = 8;
int LED8 = 9;
intLED9 = 10;
intLED10 = 11;
int LED11 = 12;
int LED12 = A1;
int LED13 = A2;
int LED14 = A3;
int LED15 = A4;
int LED16 = A5;
pin del sensor int = A0;
sensor de minutos int = A7;
int sensor de hora = A6;
unsigned int n,ADCvalue,propeller_posn;
tiempo anterior largo sin firmar = 0;
tiempo de byte = 12; // establece el tiempo
bytes minutos = 15; // establecer minutos
bytes segundos = 00; // establecer segundos
valor int;
configuración vacía ()
{
pinMode(LED1, salida);
pinMode(LED2, salida);
pinMode (LED3, salida);
pinMode (LED4, salida);
pinMode (LED5, salida);
pinMode(LED6, salida);
pinMode (LED7, salida);
pinMode (LED8, salida);
pinMode (LED9, salida);
pinMode (LED10, salida);
pinMode (LED11, salida);
pinMode (LED12, salida);
pinMode (LED13, salida);
pinMode (LED14, salida);
pinMode (LED15, salida);
pinMode (LED16, salida);
pinMode(sensorPin,INPUT_PULLUP);
si (horas == 12)
tiempo = 0;
//********************************************
// elimine el comentario de estas líneas para la prueba del sensor IR
/*
Serial.begin(9600);
mientras (1)
{
ADCvalue = analogRead (sensor de minutos);
Serial.print(“Sensor de minutos”);
Serial.println(valorADC);
ADCvalue = analogRead(hourSensor);
Serial.print (“sensor de hora”);
Serial.println(valorADC);
Serial.println();
Retraso (1000);
}
*/
//********************************************
}
bucle vacío()
{
val = lectura digital (pin del sensor);
mientras (val == BAJO)
{
val = lectura digital (pin del sensor);
}
if (millis() >= (tiempo anterior))
{
tiempo anterior = tiempo anterior + 1000;
segundos = segundos + 1;
si (segundos == 60)
{
segundos = 0;
minutos = minutos + 1;
}
si (minutos == 60)
{
minutos = 0;
tiempo = tiempo + 1;
}
si (tiempo == 12)
{
tiempo = 0;
}
}
propulsor_posn=30;
n=0;
Mientras (n < 60)
{
ADCvalue = analogRead (sensor de minutos);
si (valor ADC < 500)
{
minutos = propeller_posn;
segundos = 0;
}
ADCvalue = analogRead(hourSensor);
si (valor ADC < 500)
{
Tiempo = propeller_posn/5;
segundos = 0;
}
dibujarMarcadorDeMinuto();
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))
dibujar marcador de hora ();
if ((propeller_posn==0) || (propeller_posn==15) || (propeller_posn==30) || (propeller_posn==45))
dibujarMarcadorCuarto();
if((propeller_posn == horas*5) || (( propeller_posn == 0 ) && (horas == 0)))
dibujarManoHoras();
if(propeller_posn == minutos)
dibujarMinutosMano();
if(propeller_posn == segundos)
dibujarSegundosMano();
microsegundos de retardo (100); // para ancho de píxel de LED (cambiar valor dependiendo de la velocidad del motor, aumentar para motor lento, disminuir para motor rápido)
mostrarBorrar();
dibujarCirculo_Interior();
Microsegundos de retardo (450); // Brecha entre píxeles LED/marcadores de minutos (cambia el valor según la velocidad del motor, aumenta para motores lentos, disminuye para motores rápidos)
n++;
propeller_posn++;
si (propeller_posn == 60)
propulsor_posn=0;
}
val = lectura digital (pin del sensor);
mientras (val == ALTO)
{
val = lectura digital (pin del sensor);
}
}
//==========================
void mostrarBorrar()
{
Luz digital (LED1, BAJA);
escritura digital (LED2, bajo);
escritura digital (LED3, bajo);
escritura digital (LED4, bajo);
escritura digital (LED5, bajo);
escritura digital (LED6, bajo);
escritura digital (LED7, bajo);
escritura digital (LED8, bajo);
Luz digital (LED9, BAJA);
escritura digital (LED10, bajo);
escritura digital (LED11, bajo);
escritura digital (LED12, bajo);
escritura digital (LED13, bajo);
escritura digital (LED14, bajo);
escritura digital (LED15, bajo);
escritura digital (LED16, bajo);
}
void drawMinuteMarker()
{
escritura digital (LED16, ALTO);
}
void dibujarHourMarker()
{
escritura digital (LED15, ALTO);
escritura digital (LED14, ALTO);
}
void dibujarQuarterMarker()
{
escritura digital (LED13, ALTO);
escritura digital (LED12, ALTO);
}
void dibujarHoursHand()
{
escritura digital (LED1, ALTO);
escritura digital (LED2, alto);
Luz digital (LED3, ALTA);
Luz digital (LED4, ALTA);
Luz digital (LED5, ALTA);
Luz digital (LED6, ALTA);
Luz digital (LED7, ALTA);
}
void dibujarMinutosMano()
{
escritura digital (LED1, ALTO);
escritura digital (LED2, alta);
Luz digital (LED3, ALTA);
Luz digital (LED4, ALTA);
Luz digital (LED5, ALTA);
Luz digital (LED6, ALTA);
Luz digital (LED7, ALTA);
Luz digital (LED8, ALTA);
Luz digital (LED9, ALTA);
}
void dibujarSecondsHand()
{
escritura digital (LED1, ALTO);
escritura digital (LED2, alta);
Luz digital (LED3, ALTA);
Luz digital (LED4, ALTA);
Luz digital (LED5, ALTA);
Luz digital (LED6, ALTA);
Luz digital (LED7, ALTA);
Luz digital (LED8, ALTA);
Luz digital (LED9, ALTA);
Luz digital (LED10, ALTA);
escritura digital (LED11, ALTO);
}
anular dibujarInner_Circle()
{
escritura digital (LED1, ALTO);
microsegundos de retardo (30);
Luz digital (LED1, BAJA);
}
Simplemente conecte el R19 al primer LED IR (cerca del LED n.° 13 para la configuración de los minutos) y el R20 al segundo IR (cerca del LED n.° 16 para la configuración de la hora). Conecte el común del LED IR y ambas resistencias a los pines GND y 5V del Arduino NANO respectivamente. Finalmente, conecte un cable puente desde el pin A7 entre R19 y el segundo IR. Haz lo mismo para el pin A6 a R20 y el primer IR.
Para crear un transmisor de control remoto IR simple para configurar y controlar la función de configuración de hora de un reloj funk LED USB, simplemente conecte todos los componentes en serie (es decir, batería de 9V, LED IR, resistencia de 1k ohm y interruptor táctil de terminal positivo).
El siguiente código se usa para cambiar y ajustar los husillos de horas y minutos (reloj de pared normal y manecillas de minutos y horas de relojes analógicos) de un reloj con ventilador LED USB analógico.
Verifique la salida del circuito de detección IR utilizando el monitor serie Arduino. Por ejemplo, la lectura con luz ambiente normal es superior a 500 y la lectura con luz IR es inferior a 500. Entonces puede cambiar el código o el valor aquí dependiendo del sensor que use.
Para configurar el minutero, apunte el control remoto infrarrojo al marcador de minutos y presione el botón del control remoto. Para configurar la manecilla de la hora, apunte el control remoto infrarrojo hacia el fabricante de la hora y presione el botón del control remoto.