Paso 4: código
Ahora puede cargar el sketch de Arduino. You´re también es capaz de conectar el LED tiras ahora. Don´t conectar el módulo de BT! Primero queremos mirar el código, usted debe saber donde se pueden modificar varias cosas...
Descargar el IDE de Arduino y las bibliotecas.
IDE de Arduino, AdafruitNeoPixel, tiempo, DS1307RTC
Instalar el IDE y las bibliotecas en la carpeta de la biblioteca.
Abra el archivo adjunto de INO y subirlo a tu arduino. El código descrito aquí es lo mismo pero con otros comentarios! Si lo has hecho todo bien, ahora puede ver el "bootanimation". Es posible configurar el tiempo en el serialmonitor. Sólo tienes que escribir por ejemplo. (10:33).
No dude en jugar con el código...
Aquí mal darle una breve descripción del código (configuración sin RTC!)
DEFINICIONES:
#define pasador //Hour 6 LED tira
#define MINPIN 5 //Singelminute LED
#define NUMPIXELS 12 //Number de píxeles por hora
#define MINNUMPIXELS 4 //Number de píxeles por minuto
#define BAUDRATE 115200 / / Baudrate, debe coincidir con la velocidad de transmisión del módulo BT
#define utch ' //start BYTE de TimeSync
ajuste del horario int = 0; bandera para almacenar si el tiempo se estableció después del arranque
int delayval = 20; demora para la animación de desvanecimiento
int clocktimer = 10000; actualización de tiempo
timebright int = 250; brillo de hora tira
int mtimebright = 50; brillo de singelmin
inicializar el int = 0; bandera para llamar a la función clearpixels después del arranque
int hora;
int oldahour = 0; Almacene horas de Prev.
int trencito;
int oldamin = 0; almacena el minuto anterior para actualizar
int segundo;
día int;
int amonth;
int ayear;
mmin int;
tmElements_t tm;
Configuración de las matrices de LED de NeoPixel 2 (nombre = tipo (número de píxeles, que PIN, formato RGB o GRB, FREQ); Consulte la guía de Adafruit para obtener más información.
Pixeles Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel minpixels = Adafruit_NeoPixel (MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);
CONFIGURACIÓN:
void setup() {}
Serial.Begin(BAUDRATE);
Wire.Begin();
Initialice las tiras, todo OFF
pixels.Begin();
minpixels.Begin();
pixels.Show();
minpixels.Show();
Hacer una pequeña animación
Serial.println("Sunrise");
Sunrise();
Delay(1000);
Serial.println("Sunset");
Sunset();
pixels.Show();
Serial.println("Ready");
}
BUCLE:
void loop() {}
Busque timesync
mientras que (Serial.available() > 0) {}
char c = Serial.read();
if(c == UTCH) //if hay un @ en línea, leer los bytes que viene / ints
{
readtime();
}
}
initialice los LEDs, animación de claros
if(Initialize == 0) {}
clearpixels();
inicializar = 1;
}
hora = hour();
trencito = minute();
Si (timeset == 1 || timeset == 0) / / aquí se puede comprobar si se establece el tiempo, puede detener el programa aquí si Timeset = falso, basta con retirar "|| ajuste del horario == 0"!
{
Si (oldamin < trencito || oldahour < hora) //check si ha cambiado el tiempo. TRUE = refresh -> set todo para apagado, ver nuevo tiempo
{
clearpixels();
ClockDisplay();
}
}
}
Mostrar el reloj:
void ClockDisplay()
{
oldahour = hora;
oldamin = trencito;
int xhour, xmin;
Si (hora > = 12) {}
xhour = hora-12; Contamos solamente con 12 LEDs para la visualización de 24h
}
Else {}
xhour = hora;
}
escala en pasos de 5 minutos
xmin = (trencito / 5);
if(oldamin < aminute)
{
oldamin = trencito;
clearpixels();
}
tomar el resto del división dor singelmin LED
mMin = (trencito % 5); Modulo Operador ej. 24% 5 = 4! muy útil:-P
pixels.setBrightness(timebright);
pixels.setPixelColor (xmin, píxeles. Color(5,125,255)); puede cambiar los colores aquí! jugar!
pixels.setPixelColor (xhour, píxeles. Color(255,50,0));
pixels.Show();
Mostrar los minutos de singel
para (int m = 0; m
minpixels.setBrightness(mtimebright);
minpixels.setPixelColor (m, píxeles. Color(255,255,0));
minpixels.Show();
}
}
Leer y procesar la información de la serie
void readtime() / / si ya tenemos los principales "los próximos datos y almacenar el tiempo para el tiempo Lib
{
hora = Serial.parseInt();
trencito = Serial.parseInt();
segundo = Serial.parseInt();
día = Serial.parseInt();
amonth = Serial.parseInt();
ayear = Serial.parseInt();
Serial.println("TIMESET");
Serial.Print(ahour);
Serial.Print(":");
Serial.println(aminute);
setTime(ahour,aminute,asecond,aday,amonth,ayear);
}
¡Borrar todo!
void clearpixels() / / conjunto de cada píxel en off para actualizar la pantalla
{
pixels.Begin();
minpixels.Begin();
para (i=0;ipixels.setPixelColor int (i, píxeles. Color(0,0,0));
minpixels.setPixelColor (i, píxeles. Color(0,0,0));
pixels.Show();
minpixels.Show();
}
}