Skip to content

Construye tu propio reloj binario con Arduino

Acerca del proyecto

¡Hola amigos!

En esta ocasión, he recreado un proyecto muy sencillo de realizar con Arduino, y que si estás iniciando en este mundo, seguro te interesará.

Se trata de un reloj binario creado con luces led. 

He preparado el material para que sea ameno y fácil de seguir, explicando paso a paso cómo conectar cada componente. ¡Empecemos!

Componentes para crear un reloj binario con Arduino

La lista de componentes es muy sencilla. Te los enlisto a continuación:

Componentes para crear un reloj binario con Arduino

Diagrama de conexión para crear un reloj binario con Arduino

El diagrama de conexión es bastante sencillo, aunque parezcan muchos cables, realmente la conexión es la misma para cada salida del Arduino:

Diagrama Reloj Binario con Arduino

A continuación, he aislado una sola conexión, para que veas cuál es la conexión básica de cada uno de los leds, si te fijas, básicamente, es un led conectado a través del polo positivo a uno de los pines del Arduino, mientras que la pata negativa, va conectada a una resistencia, y finalmente al canal que conecta con el pin GND del Arduino.

Conexión básica de un led para crear el reloj binario

Código fuente para hacer funcionar el reloj binario con Arduino

El código fuente requiere un poco de comprensión acerca de funciones propias del lenguaje de Arduino. Dicho esto, el código es el siguiente:

int ledPinsSec[] = {2, 3, 4, 5, 6, 7};
int ledPinsMin[] = {8, 9, 10, 11, 12, 13};
int ledPinsHr[] = {14, 15, 16, 17, 18, 19};
int secSize =sizeof(ledPinsSec) / sizeof(int);
  int minSize = sizeof(ledPinsMin) / sizeof(int);
  int hourSize = sizeof(ledPinsHr) / sizeof(int);
int seconds = 30;
int minutes = 30;
int hours = 15;
void setup() 
{
  Serial.begin(9600);
  //Obtiene el número de elementos de un arreglo
  Serial.println(sizeof(ledPinsSec));
  for(int i = 0; i< secSize;i++)
  {
    pinMode(ledPinsSec[i], OUTPUT);
  }
  for(int i = 0; i< minSize;i++)
  {
    pinMode(ledPinsMin[i], OUTPUT);
  }
  for(int i = 0; i< hourSize;i++)
  {
    pinMode(ledPinsHr[i], OUTPUT);
  }
}
void loop() 
{
    seconds++;
    if(seconds > 59)
    {
      seconds = 0;
      minutes++;
      if(minutes > 59)
      {
        minutes = 0;
        hours++;
        if(hours > 23)
        {
          hours = 0;
        }
      }
    }
    //Serial.println((char) seconds);
    Serial.print("Hours: ");
    Serial.print(hours);
    Serial.print(" Minutes: ");
    Serial.print(minutes);
    Serial.print(" Seconds: ");
    Serial.println(seconds);
    DisplaySeconds();
    DisplayMinutes();
    DisplayHours();
    delay(1000);
/*
    DisplaySeconds();
    DisplayMinutes();
    DisplayHours();*/
}
void DisplaySeconds()
{     
  for(int i = secSize - 1; i>= 0; i--)
  {
    int currentSecond = bitRead(seconds, i);
    digitalWrite(ledPinsSec[i], currentSecond); 
  }  
}
void DisplayMinutes()
{     
  for(int i = minSize - 1; i>= 0; i--)
  {
    int currentMinute = bitRead(minutes, i);
    digitalWrite(ledPinsMin[i], currentMinute); 
  }  
}
void DisplayHours()
{     
  for(int i = hourSize - 1; i>= 0; i--)
  {
    int currentHour = bitRead(hours, i);
    digitalWrite(ledPinsHr[i], currentHour); 
  }  
}
 

Video para crear un reloj binario con Arduino paso a paso

Una vez dicho todo lo anterior, te dejo un video con el paso a paso, por si tienes dudas respecto a algún paso en específico.