Saltar la navegación

Construye un reloj digital


#include <Time.h> //Incluimos una librería para controlar el tiempo
#define LATCH_PIN 7 //Pines donde conectaremos los cables
#define CLOCK_PIN 8
#define DATA_PIN 2
byte num[] = {3, 159, 37, 13, 153, 73, 65, 31, 1, 25}; //Códigos para los números
byte dir[] = {64, 32, 16, 8, 4, 2}; //Códigos para las direcciones
byte hora[6]; //Variable donde guardaremos
void setup() { //los 6 dígitos de la hora para
  pinMode(LATCH_PIN, OUTPUT); //poder mandarlos por separado
  pinMode(CLOCK_PIN, OUTPUT); //Configuramos los pines de salida
  pinMode(DATA_PIN, OUTPUT); //Ponemos el reloj a cero
  setTime(0, 0, 0, 20, 04, 2015);
}
void loop() {
  time_t t = now(); //Guardamos el tiempo actual en la variable t
  //Calculamos cada uno de los dígitos de la hora:
  hora[0] = int(hour(t) / 10); //Decenas de la hora
  hora[1] = hour(t) - hora[0] * 10; //Unidades de la hora
  hora[2] = int(minute(t) / 10); //Decenas de los minutos
  hora[3] = minute(t) - hora[2] * 10; //Unidades de los minutos
  hora[4] = int(second(t) / 10); //Decenas de los segundos
  hora[5] = second(t) - hora[4] * 10; //Unidades de los segundos
  for (byte i = 0; i < 6; i++) { //Mostramos cada uno de los 6 dígitos
    byte n = hora[i]; //Número que vamos a mostrar
    digitalWrite(LATCH_PIN, LOW);
    shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, dir[i]); //Dirección
    shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, num[n]); //Número
    digitalWrite(LATCH_PIN, HIGH);
  }
}

Creado con eXeLearning (Ventana nueva)