Skip to content

Instantly share code, notes, and snippets.

@mcattani
Created March 23, 2021 03:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mcattani/c4a409ea42aa92ac6023b2f88767b220 to your computer and use it in GitHub Desktop.
Save mcattani/c4a409ea42aa92ac6023b2f88767b220 to your computer and use it in GitHub Desktop.
Librería Time + Rueda Neopixel de 12 leds RGB
/*
* Este proyecto trata de hacer uso de la librería TIME y utilizar una rueda NeoPixel
* de 12 leds RGB para mostrar la hora, minutos y segundos utilizando los colores como referencia.
* La rueda de leds está conectada al PIN D3 del Arduino (con una resistencia de 330 ohms).
* También hay conectado un condensador de 100uf en la alimentación de la rueda y un potenciómetro conectado en A0
* para poder variar la intensidad del brillo de los LED.
* Más información en: https://thenerdyapprentice.blogspot.com/
*/
// Incluimos las librerías que vamos a utilizar
#include <Adafruit_NeoPixel.h>
#include <Time.h>
// Definimos constantes: pin al que tenemos conectada la rueda y cantidad de leds que posee
const byte LED_PIN = 3;
const byte LED_COUNT = 12;
const byte POT = A0; // Potenciómetro
// Declaramos nuestro objeto NeoPixel
Adafruit_NeoPixel rueda(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(9600); // Iniciamos el puerto Serie
// Seteamos el calendario
setTime(22,33,20,22,03,2021); // HORA, MINUTOS, SEGUNDOS, DIA, MES, AÑO
// rueda.setBrightness(50); // Setemos el nivel de brillo de los leds
rueda.begin(); // Inicializamos los leds
rueda.show(); // Apagamos todos los leds
}
void loop(){
// rueda.setBrightness(20); // Setemos el nivel de brillo de los leds
rueda.setBrightness(map(analogRead(POT), 0, 1023, 0, 100)); // Setea el nivel del brillo según el valor obtenido por el potenciómetro (utilizando la función map() para restringir los valores
segundos();
minutos();
horas();
rueda.clear(); // Para "limpiar" la rueda y que no queden todos los leds encendidos, si no únicamente los que marcan el horario
mostrarTiempo();
}
// Definimos las funciones que muestran en la rueda de leds: horas, minutos y segundos
void horas() {
byte horas;
time_t t = now(); // definimos la variable time_t
horas=hourFormat12(t); // para que nos muestre las horas en formato 12hs
if(horas==12) horas=0; // El pixel #12 es el pixel #0
rueda.setPixelColor(horas, 255, 0, 0);
rueda.show();
}
void minutos(){
byte minutos;
time_t t = now(); // definimos la variable time_t
minutos=(minute(t)/5);
rueda.setPixelColor(minutos, 0, 255, 0);
rueda.show();
}
void segundos(){
byte segundos;
time_t t = now(); // definimos la variable time_t
segundos=(second(t)/5);
rueda.setPixelColor(segundos, 0,0,255);
rueda.show();
}
void mostrarTiempo() { // Función que nos muestra en la salida serial: hora, minutos, etc...
time_t t = now(); // definimos la variables time_t
Serial.print(day(t));
Serial.print(+ "/") ;
Serial.print(month(t));
Serial.print(+ "/") ;
Serial.print(year(t));
Serial.print( " ") ;
Serial.print(hourFormat12(t));
Serial.print(+ ":") ;
Serial.print(minute(t));
Serial.print(":") ;
Serial.println(second(t));
delay(1000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment