#include <WiFi.h>
#include <ESP32Time.h>
#include <ESP32Servo.h>
ESP32Time rtc;
// Estructura para el RTC
#define NTP_SERVER "mx.pool.ntp.org"
#define UTC_OFFSET 0
#define UTC_OFFSET_DST -21600
//----------------Salidas----------------
//Pastilla 1
#define LED 2
#define BUZ 4
int pinservo = 15;
Servo servo01;
//-------- Valores a utilizar-----------
//pastilla 1
int Pastilla1 = 0;
int hora_ini1H = 18;
int hora_ini1M = 11;
int hora_ini1S = 30;
int medicamento1H = 00;
int medicamento1M = 00;
int medicamento1S = 10;
int cnsm1 = 0;
int dosis1 = 5;
//int a1 = medicamento1;
//pastilla 2
int Pastilla2 = 0;
int hora_ini2 = 0;
int medicamento2 = 0;
int cnsm2 = 0;
int dosis2 = 0;
int a2 = medicamento2;
//pastilla 3
int Pastilla3 = 0;
int hora_ini3 = 0;
int medicamento3 = 0;
int cnsm3 = 0;
int dosis3 = 0;
int a3 = medicamento3;
//pastilla 4
int Pastilla4 = 0;
int hora_ini4 = 0;
int medicamento4 = 0;
int cnsm4 = 0;
int dosis4 = 0;
int a4 = medicamento4;
//pastilla 5
int Pastilla5 = 0;
int hora_ini5 = 0;
int medicamento5 = 0;
int cnsm5 = 0;
int dosis5 = 0;
int a5 = medicamento5;
void setup() {
pinMode(LED, OUTPUT);
servo01.attach(pinservo, 500, 2500);
//rtc.setTime(0, 37, 16, 02, 11, 2022);
Serial.begin(115200);
// Conexion a internet
Serial.print("Conectando a ");
Serial.print(0, 1);
Serial.print("WiFi ");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(250);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
configTime(UTC_OFFSET, UTC_OFFSET_DST, NTP_SERVER);
}
void loop() {
String now = rtc.getTime("%H %M %S");
Serial.print(now);
Serial.print("");
delay(1000);
// valores que usa el RTC para obtener los datos
int segundos = rtc.getSecond();
int minutos = rtc.getMinute();
int horas = rtc.getHour();
int dias = rtc.getDay();
int mes = rtc.getMonth();
String horario = rtc.getAmPm(true);
if (hora_ini1S > segundos)
{
minutos = (hora_ini1S / segundos) + minutos;
hora_ini1S = (hora_ini1S - segundos) ;
}
if (/*horas == hora_ini1H && */minutos == hora_ini1M && segundos == hora_ini1S && cnsm1 != dosis1 )
{
digitalWrite(LED, HIGH);
tone(4, 200, 30);
delay(50);
noTone(4);
digitalWrite(LED, LOW);
servo01.write(0);
delay(1000);
servo01.write(90);
delay(1000);
servo01.write(0);
hora_ini1H = hora_ini1H + medicamento1H;
hora_ini1M = hora_ini1M + medicamento1M;
hora_ini1S = hora_ini1S + medicamento1S;
cnsm1 = cnsm1 + 1;
}
// compartimiento 2 del pastillero
if (segundos == hora_ini2 && cnsm2 != dosis2 )
{
digitalWrite(LED, HIGH);
tone(4, 200, 30);
delay(50);
noTone(4);
digitalWrite(LED, LOW);
servo01.write(0);
delay(1000);
servo01.write(90);
delay(1000);
servo01.write(0);
hora_ini2 = hora_ini2 + medicamento2;
cnsm2 = cnsm2 + 1;
}
// compartimiento 3 del pastillero
if (segundos == hora_ini3 && cnsm3 != dosis3 )
{
digitalWrite(LED, HIGH);
tone(4, 200, 30);
delay(50);
noTone(4);
digitalWrite(LED, LOW);
servo01.write(0);
delay(1000);
servo01.write(90);
delay(1000);
servo01.write(0);
hora_ini3 = hora_ini3 + medicamento3;
cnsm3 = cnsm3 + 1;
}
// compartimiento 4 del pastillero
if (segundos == hora_ini4 && cnsm4 != dosis4 )
{
digitalWrite(LED, HIGH);
tone(4, 200, 30);
delay(50);
noTone(4);
digitalWrite(LED, LOW);
servo01.write(0);
delay(1000);
servo01.write(90);
delay(1000);
servo01.write(0);
hora_ini4 = hora_ini4 + medicamento4;
cnsm4 = cnsm4 + 1;
}
// compartimiento 5 del pastillero
if (segundos == hora_ini5 && cnsm5 != dosis5 )
{
digitalWrite(LED, HIGH);
tone(4, 200, 30);
delay(50);
noTone(4);
digitalWrite(LED, LOW);
servo01.write(0);
delay(1000);
servo01.write(90);
delay(1000);
servo01.write(0);
hora_ini5 = hora_ini5 + medicamento5;
cnsm5 = cnsm5 + 1;
}
}