ALARMA AGUA
3.5.1 ObjetivosReto
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
3.5.2Solución Maqueta
Ampliamos con el sensor de agua en una pared
3.5.3 Esquemaesquema 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
3.5.4Solución Vívídeo
3.5.6Solución Cócódigo
///////////////////////////////////////LIBRERIAS #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 intJOYSTICKROJOJOYSTICKSW =23;constintJOYSTICKSW=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/outputpinMode(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 inicialdigitalWrite(TIMBRE,HIGH);// timbre apagadomyservo.attach(PUERTA);//servo en el pin correspondientemyservo.write(CERRADO);//puerta cerradaPUERTAABIERTA = false;digitalWrite(AZUL,LOW);//luz rgb apagadadigitalWrite(ROJO,LOW);//luz rgb apagadadigitalWrite(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";}}}ifif(command=="boton"){if (!PUERTAABIERTA){Serial.println("Abriendo puerta .... ");PUERTAABIERTA=true;myservo.write(ABIERTO);}else{CerrarPuerta(); }else{CerrarPuerta();}}command}=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);}}}