You are on page 1of 8

#include <Wire.

h> // incluye libreria para interfaz I2C

#include <RTClib.h> // incluye libreria para el manejo del modulo RTC

#include <Servo.h>

#include <SoftwareSerial.h>

SoftwareSerial sim(10, 11);//RX,TX azul en el 11 y el verde 10;

String number = "+51923417303"; // +880 is the country code

/*

* */

RTC_DS3231 rtc; // crea objeto del tipo RTC_DS3231

bool alarma = true; // variable de control con valor verdadero

Servo servo1;

//para el servo2

Servo servoali;

int TRIG=8;

int ECO=7;

long duracion;

long distancia;

/*

FUNCIONES

*/
void moverservo1(){

int i;

for(i=0;i<=180;i++)

servo1.write(i);//se le colca la posición entre 0 y180 grados

delay(5);

delay(1000);

for(i=180;i>0;i--)

servo1.write(i);//se le colca la posición entre 0 y180 grados

delay(5);

delay(1000);

void moverservoali(){

int i;

for(i=0;i<=180;i++)

servoali.write(i);//se le colca la posición entre 0 y180 grados

delay(5);

delay(1000);

for(i=180;i>0;i--)
{

servoali.write(i);//se le colca la posición entre 0 y180 grados

delay(5);

delay(1000);

void SendMessage1()

sim.println("AT+CMGF=1");

delay(1000);

sim.println("AT+CMGS=\"" + number + "\"\r");

delay(1000);

String SMS = "Nivel de comida bajo";

sim.println(SMS);

delay(100);

sim.println((char)26);

delay(1000);

void SendMessage2()

sim.println("AT+CMGF=1");

delay(1000);

sim.println("AT+CMGS=\"" + number + "\"\r");

delay(1000);

String SMS = "Se acabo la comida del dispensador";

sim.println(SMS);

delay(100);

sim.println((char)26);

delay(1000);
}

void callNumber() {

sim.print (F("ATD"));

sim.print (number);

sim.print (F(";\r\n"));

/*

*/

void setup () {

servoali.attach(2); // se asigna el pin

pinMode(TRIG,OUTPUT); // trig como salida enviar información

pinMode(ECO,INPUT);//como entrdad recibir información

Serial.begin(9600);

/**/

servo1.attach(3); // se asigna el pin

Serial.begin(9600); // inicializa comunicacion serie a 9600 bps

if (! rtc.begin()) { // si falla la inicializacion del modulo

Serial.println("Modulo RTC no encontrado !"); // muestra mensaje de error

while (1); // bucle infinito que detiene ejecucion del programa

}
/**/

Serial.begin(9600);

Serial.println("Espere unos segundos ...");

delay(5000);

Serial.println("Sistema Encendido...");

sim.begin(9600);

delay(1000);

Serial.println("Escriba c para realizar una llamada y s para enviar un SMS");

void loop () {/**/

DateTime fecha = rtc.now(); // funcion que devuelve fecha y horario en formato

// DateTime y asigna a variable fecha

if ( fecha.hour() == 1 && fecha.minute() == 10 ){ // si hora = 14 y minutos = 30

if ( alarma == true ){

// si alarma tiene un valor verdadero

Serial.println( "Alarma" ); // imprime en monitor serie texto Alarma

moverservo1();

alarma = false; // carga valor falso en variable de control

} // para evitar ingresar mas de una vez

/*Serial.print(fecha.day()); // funcion que obtiene el dia de la fecha completa

Serial.print("/"); // caracter barra como separador

Serial.print(fecha.month()); // funcion que obtiene el mes de la fecha completa

Serial.print("/"); // caracter barra como separador

Serial.print(fecha.year()); // funcion que obtiene el año de la fecha completa

Serial.print(" "); // caracter espacio en blanco como separador


Serial.print(fecha.hour()); // funcion que obtiene la hora de la fecha completa

Serial.print(":"); // caracter dos puntos como separador

Serial.print(fecha.minute()); // funcion que obtiene los minutos de la fecha completa

Serial.print(":"); // caracter dos puntos como separador

Serial.println(fecha.second()); // funcion que obtiene los segundos de la fecha completa

*/

delay(1000); // demora de 1 segundo

if ( fecha.hour() == 2 && fecha.minute() == 0 ) // si hora = 2 y minutos = 0 restablece valor de

alarma = true; // variable de control en verdadero

/**/

digitalWrite(TRIG,HIGH);//encendemos al pin Trig para enviar a señal

delay(10);

digitalWrite(TRIG,LOW);/* apagamos trig y el sensor de forma automática envía una onda


ultrasónica y como prendimos el eco este de forma automática cuenta el tiempo en
microsegundos que se demora en llegar */

duracion=pulseIn(ECO,HIGH);

distancia=duracion/58;

Serial.println(distancia);//se imprime en pantalla la distancia

delay(50);

if (Serial.available() > 0)

switch (Serial.read())

case 'c':

callNumber();
break;

case 's':

SendMessage1();

break;

if (sim.available() > 0)

Serial.write(sim.read());

/* if(distancia==10)

{ moverservoali();

if (Serial.available() > 0){

callNumber();

// SendMessage1();

if (sim.available() > 0)

Serial.write(sim.read());

}*/

/**/

if(distancia==20)

{ if (Serial.available() > 0)

{ callNumber();

// SendMessage2();}

if (sim.available() > 0)

{Serial.write(sim.read());
}

delay(1000);

You might also like