Estamos en el colegio y tenemos que hacer un proyecto en el cual mediante una pequeña pantalla OLED haremos un tipo de alarma que muestre a sus usuarios recordatorios y dependiendo el horario de la reestriccion vehicular muestre distintos mensajes, hasta ahora usamos una pantalla OLED I2C 1.3" un Módulo RTC DS3231 y queremos saber como podriamos programar esto que consiste asi:
si la placa de mi automovil termina en algun número par, tendré reestriccion todos los dias pares, entonces de 6:00 am a 8:30 am no podre circular mi vehiculo y nuevamente de 3:00 pm a 7:30 pm no podre usarlo; ele objetivo principal es que en el momento que tenga reestricción poder mostrar "Tiene pico y placa" y cuando no poder mostrar "no tiene pico y placa", solo que no sabemos como crear estos horarios y tampoco sabemos como lograr que el arduino lea e identifique cada dia y sepa si es par o impar, por esta razón decidimos crear este hilo, para poder obtener algo de su ayuda y poder concretar nuestro proyecto, les agradeceriamos mucho la informacion y ayuda para el proyecto, actualmente utilizamos las librerias "u8glib" para el display y "Sodaq_DS3231" para el rtc.
#include <Wire.h>
#include <RTClib.h>
RTC_DS3231 rtc;
void setup(){
Serial.begin(57600);
rtc.begin(DateTime(F(__DATE__), F(__TIME__))); //Hacer solo la primera vez
}
Luego de sincronizar la fecha y hora correcta puedes usar el método dayOfWeek() para saber el dia de la semana (0=domingo) y con el método unixtime() el numero de segundos transcurridos desde el 1-ENE-1970. Solo hay que extraer el modulo de 24*3600 y luego dividir entre 3600.
void loop(){
DateTime hoy = rtc.now();
byte dia = hoy.dayOfTheWeek(); //Dia de la semana
float hr = (hoy.unixtime() % 86400)/3600.0; //Hora del dia
//Lunes o miercoles
if (dia == 1 || dia == 3){
//De 6 a 8:30 o 15 a 19:30
if ((hr > 6 && hr < 8.5) || (hr > 15 && hr < 19.5)){
Serial.println("Pico y placa");
}
}
}