Skip to main content

ALARMA AGUA

Reto

Ahora vamos a utilizar el sensor de agua para prevenir "accidentes" en casa

  • Si el sensor de agua detecta líquido
    • Suena una alarma de 10 pulsos mientras esté funcionando
    • Si la puerta estuviera abierta
      • La cierra pues entraría agua
Solución esquema eléctrico
  • Sensor de Agua en D8 igual que vimos en la parte de bloques
  • Alimentación GND y +5V del sensor de agua o en 1 y 2 o en 3 y 4

Solución vídeo

Solución código

https:///////////////////////////////////////LIBRERIAScreate.arduino.cc/editor/javierquintana/3eaca00b-a7b7-4357-a191-c5cfd33c004a/preview

#include

 <Servo.h>

#include <SoftwareSerial.h> ///////////////////////////////////////ENTRADAS SALIDAS DIGITALES /////// // 0 ocupado por el puerto serie ordenador-arduino // 1 ocupado por el puerto serie ordenador-arduino const int PULSADORTIMBRE =2;      //sensor tactil const int TIMBRE =3;     //buzzer activo const int PUERTA = 4;     //servo puerta const int AZUL = 5;     //led RGB const int ROJO = 6;     //led RGB const int VERDE = 7;     //led RGB const int AGUA =8;     //sensor agua const int LED = 13; ////////////////////////////////////// ENTRADAS ANALÓGICAS ///////////// const int JOYSTICKAZUL = 1;    const int JOYSTICKROJO = 2; const int JOYSTICKSW   = 3; ////////////////////////////////////// OBJETOS Servo myservo;                  //objeto servo ///////////////////////////////////////VARIABLES const int ABIERTO =0;               //ángulo abierto puerta const int CERRADO =75;              //ángulo cerrado puerta, se ha modificado con respecto a 90 que es cierre total pues tropezaba con la pared bool PUERTAABIERTA;                 //guardará si está abierto o no const int QUITAREBOTES = 1000;      //el tiempo para eliminar rebotes String command = "";                // guardará la respuesta desde el BT bool ENCENDIDO;                     //guardará que debe de dejar la luz encendida /////////////////////////////////////FUNCIONES void CerrarPuerta(); void Alarma(String Que); ////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////INICIO ////////////////////////// ////////////////////////////////////////////////////////////////////////// void setup() {  Serial.begin(9600);       //inicializar el puerto serie del ordenador  ////////////////////////////////fijar input/output  pinMode(PULSADORTIMBRE, INPUT);  pinMode(TIMBRE, OUTPUT);  pinMode(PUERTA, OUTPUT);  pinMode(AZUL, OUTPUT);  pinMode(ROJO, OUTPUT);  pinMode(VERDE, OUTPUT);  pinMode(LED,OUTPUT);  pinMode(AGUA,INPUT);  ///////////////////////////////fijar situación inicial  digitalWrite(TIMBRE,HIGH);  // timbre apagado  myservo.attach(PUERTA);    //servo en el pin correspondiente  myservo.write(CERRADO);   //puerta cerrada  PUERTAABIERTA = false;  digitalWrite(AZUL,LOW);  //luz rgb apagada    digitalWrite(ROJO,LOW);  //luz rgb apagada    digitalWrite(VERDE,LOW);  //luz verde apagada   } ////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////BUCLE /////////////////////////// ////////////////////////////////////////////////////////////////////////// void loop() {  //////////////////////////// timbre ////////////////////////////////////////  if (digitalRead(PULSADORTIMBRE)){    Serial.println("Abriendo puerta .... ");    PUERTAABIERTA=true;    myservo.write(ABIERTO);    delay(3000);    CerrarPuerta();  }  ////////// pulsadorjoystick abrir y cerrar la puerta  //////////////////////  int valor=analogRead(JOYSTICKSW);  //Serial.println(valor);  if (valor==0){    delay(QUITAREBOTES);    valor=analogRead(JOYSTICKSW);    if (valor==0){      Serial.println("//////////////HAS PULSADO EL BOTÓN DEL JOYSTICK");      command="boton";      }  }  if (command=="boton"){    if (!PUERTAABIERTA){        Serial.println("Abriendo puerta .... ");        PUERTAABIERTA=true;        myservo.write(ABIERTO);        }else{        CerrarPuerta();      }  }  command = "";   //////////// juego luces joystick //////////////////////////////////////////  int valorAz = analogRead(JOYSTICKAZUL);  valorAz = (valorAz-500)/2.5;  if (valorAz<5) valorAz =0;  if (!ENCENDIDO)analogWrite(AZUL,valorAz);  int valorRo = analogRead(JOYSTICKROJO);  valorRo = (valorRo-550)/2.5;  if (valorRo<5) valorRo =0;  if (!ENCENDIDO) analogWrite(ROJO,valorRo);  //////////////// agua /////////////////////////////////////////////////  if (digitalRead(AGUA)){    Alarma("AGUA !!!");    if (PUERTAABIERTA)  CerrarPuerta();  }   } ////////////////////////////////////////////////////////////////////////// //////////////////////////////////FUNCION CERRAR PUERTA//////////////////// ////////////////////////////////////////////////////////////////////////// void CerrarPuerta(){  if (PUERTAABIERTA){    for (int i=1;i<=3;i++){      Serial.println("CERRANDO PUERTA !!!");      digitalWrite(LED,HIGH);      digitalWrite(TIMBRE,LOW);      delay(1000);      digitalWrite(TIMBRE,HIGH);      digitalWrite(LED,LOW);      delay(1000);    }     myservo.write(CERRADO);    PUERTAABIERTA=false;    Serial.println("Puerta cerrada");  } } ////////////////////////////////////////////////////////////////////////// //////////////////////////////////FUNCION ALARMA /////////////////// ////////////////////////////////////////////////////////////////////////// void Alarma(String Que){  for (int i = 1;i<=10;i++){    digitalWrite(TIMBRE,LOW);    digitalWrite(LED,HIGH);    String mensaje="ALARMA !!!!!!"+Que;    Serial.println(mensaje);    delay(100);    digitalWrite(TIMBRE,HIGH);    digitalWrite(LED,LOW);    mensaje="ATENCIÓN !!!!!!"+Que;    Serial.println(mensaje);    delay(100);    } }