FUEGO
ATENCIÓN hemos pensado la utilización del sensor de fuego sólo en la parte de CODIGO, pues es para nivel de secundaria.
Implica la utilización de un mechero, con el peligro que conlleva. Utilizar este ejemplo en clase bajo responsabilidad y supervisión del docente.
3.6.1 ObjetivosReto
Tenemos que hacer dos programaciones * Activar o no la alarma * cuando hay una pulsación larga en el pulsador escondido, se activa o se desactiva la alarma * si se ha disparado la alarma tiene que apagarla * Disparo de la alarma * Si la alarma está actividad, vigilando y se produce una detección, la alarma tiene que sonar hasta que la desactivamos con una pulsación larga del pulsador.
3.6.2Solución Maqueta
maqueta
Fijaremos en la pared el sensor llama que lo vimos anteriormente en 2.7 y el pulsador de activación o no de la alarma.
- Sensor llama
- Pulsador analógico
- Conexión sensor llama a la entrada digital
- Conexión del pulsador analógico a la entrada analógica
Las alimentaciones de los dos sensores igual que en las páginas anteriores.
3.6.3Solución Esquemaesquema eléctrico
- Sensor llama a D9
- Pulsador analógico a A4
3.6.4Solución Vívídeo
3.6.5Solució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 LLAMA=9;//sensor LLAMA const int LED = 13; ////////////////////////////////////// ENTRADAS ANALÓGICAS /////////////////////// const int JOYSTICKAZUL = 1;//potenciómetro eje x del joystick const int JOYSTICKROJO = 2;//potenciómetro eje y del joystick const int JOYSTICKSW= 3;//switch del joystick const int ONOFF= 4;//interruptor que apaga o enciende la alarma /////////////////////////////////////////////////////////// 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 bool PONERALARMA;//guardará que las alarmas están activas String QUESENSOR;//guarda qué sensor se ha disparado; bool DISPARO;//guardará que ha ocurrido un disparo de alarma /////////////////////////////////////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);pinMode(LLAMA,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 apagadaPONERALARMA = false;DISPARO = false;QUESENSOR = ""; } ////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////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();}/////////////// ALARMA FUEGO /////////////////////////////////////if (PONERALARMA){digitalWrite(VERDE,HIGH);ifif(digitalRead(LLAMA)==0){DISPARO=true;QUESENSOR ="FUEGO";}////////////// DISPARO //////////////if (DISPARO) Alarma(QUESENSOR);}else{digitalWrite(VERDE,LOW);}////////////// ONOFF ///////////////valor=analogRead(ONOFF);if (valor==0){delay(QUITAREBOTES);valor=analogRead(ONOFF);if (valor==0){Serial.println("//////////////HAS PULSADO EL BOTÓN ON/OFF ALARMA ////////////////");if (PONERALARMA){PONERALARMA=false;DISPARO = false;}else{PONERALARMA=true;}}} } ////////////////////////////////////////////////////////////////////////// //////////////////////////////////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);}}}