Created
March 23, 2021 03:04
-
-
Save mcattani/c4a409ea42aa92ac6023b2f88767b220 to your computer and use it in GitHub Desktop.
Librería Time + Rueda Neopixel de 12 leds RGB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* 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