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
#include
<Servo.h>#include<SoftwareSerial.h>///////////////////////////////////////ENTRADAS SALIDAS DIGITALES ///////// 0 ocupado por el puerto serie ordenador-arduino// 1 ocupado por el puerto serie ordenador-arduinoconstintPULSADORTIMBRE=2;//sensor tactilconstintTIMBRE=3;//buzzer activoconstintPUERTA=4;//servo puertaconstintAZUL=5;//led RGBconstintROJO=6;//led RGBconstintVERDE=7;//led RGBconstintAGUA=8;//sensor aguaconstintLED=13;////////////////////////////////////// ENTRADAS ANALÓGICAS /////////////constintJOYSTICKAZUL=1;constintJOYSTICKROJO=2;constintJOYSTICKSW=3;////////////////////////////////////// OBJETOSServomyservo;//objeto servo///////////////////////////////////////VARIABLESconstintABIERTO=0;//ángulo abierto puertaconstintCERRADO=75;//ángulo cerrado puerta, se ha modificado con respecto a 90 que es cierre total pues tropezaba con la paredboolPUERTAABIERTA;//guardará si está abierto o noconstintQUITAREBOTES=1000;//el tiempo para eliminar rebotesStringcommand="";// guardará la respuesta desde el BTboolENCENDIDO;//guardará que debe de dejar la luz encendida/////////////////////////////////////FUNCIONESvoidCerrarPuerta();voidAlarma(StringQue);///////////////////////////////////////////////////////////////////////////////////////////////////////////////////INICIO ////////////////////////////////////////////////////////////////////////////////////////////////////voidsetup(){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 /////////////////////////////////////////////////////////////////////////////////////////////////////voidloop(){//////////////////////////// timbre ////////////////////////////////////////if(digitalRead(PULSADORTIMBRE)){Serial.println("Abriendo puerta .... ");PUERTAABIERTA=true;myservo.write(ABIERTO);delay(3000);CerrarPuerta();}////////// pulsadorjoystick abrir y cerrar la puerta //////////////////////intvalor=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 //////////////////////////////////////////intvalorAz=analogRead(JOYSTICKAZUL);valorAz=(valorAz-500)/2.5;if(valorAz<5)valorAz=0;if(!ENCENDIDO)analogWrite(AZUL,valorAz);intvalorRo=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//////////////////////////////////////////////////////////////////////////////////////////////voidCerrarPuerta(){if(PUERTAABIERTA){for(inti=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 /////////////////////////////////////////////////////////////////////////////////////////////voidAlarma(StringQue){for(inti=1;i<=10;i++){digitalWrite(TIMBRE,LOW);digitalWrite(LED,HIGH);Stringmensaje="ALARMA !!!!!!"+Que;Serial.println(mensaje);delay(100);digitalWrite(TIMBRE,HIGH);digitalWrite(LED,LOW);mensaje="ATENCIÓN !!!!!!"+Que;Serial.println(mensaje);delay(100);}}