Proyecto Pico y Placa

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.

Hola @KEVIN_S0512, te recomiendo que leas las Normas del foro.

También lee los primeros hilos presentes en algunas secciones, ejemplo, no debiste postear en la Sección Proyectos.

Vamos por partes:

si la placa de mi automovil termina en algun número par

Identificar un vehículo es la primer tarea, podrias usar detectores RFID de largo alcance considerando la distancia entre un vehículo y el lector.

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

En este caso tenemos dos alternativas, pero te diré la mas simple:
si lees las horas y minutos puedes armar una variable de nombre tiempo

tiempo = hora *60 + minutos;

donde hora y minutos son variables que tienen los datos del RTC.

Haciendo este cálculo tiempo tendrá un valor que va de 0 a 23*60+59 = 1439

Asi que supongamos debes tomar una resolución entre 6:00 AM y 8:30AM entonces

6:00AM = 624+00 = 144
8:30AM = 8
24+30 = 222

asi que

if (tiempo >= 144 && tiempo <= 222) {
  // No puede circular patente par
}

Ya tienes la idea supongo.

Te recomiendo el uso de la libreria 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");
      }
   }
}