LÁSER
{{@2992#bkmrk-el-diodo-l%C3%A1ser-es-un}}
{{@2992#bkmrk-}}
{{@2992#bkmrk-si-quieres-saber-m%C3%A1s}}
3.7.1
3.7.6 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;2; //sensor tactil const int TIMBRE =3;3; //buzzer activo const int PUERTA =4;4; //servo puerta const int AZUL =5;5; //led RGB const int ROJO =6;6; //led RGB const int VERDE =7;7; //led RGB const int AGUA =8;8; //sensor agua const intLLAMA=9;LLAMA=9; //sensor LLAMA const intLASER=10;LASER=10; //diodo LASER constconstintintLEDLED==13;13;////////////////////////////////////// ENTRADAS ANALÓGICAS /////////////////////// const int LDR =0;0; //sensor luz LDR const int JOYSTICKAZUL =1;1; //potenciómetro eje x del joystick const int JOYSTICKROJO =2;2; //potenciómetro eje y del joystick const int JOYSTICKSW =3;3; //switch del joystick const int ONOFF =4;4; //interruptor que apaga o enciende la alarma /////////////////////////////////////////////////////////// OBJETOS/////////////// Servomyservo;myservo; //objeto servo ///////////////////////////////////////VARIABLES////////////////////////////////// const int ABIERTO =0;0; //ángulo abierto puerta const int CERRADO =75;75; //ángulo cerrado puerta, se ha modificado con respecto a 90 que es cierre total pues tropezaba con la pared boolPUERTAABIERTA;PUERTAABIERTA; //guardará si está abierto o no const int QUITAREBOTES =1000;1000; //el tiempo para eliminar rebotes String command = ""; // guardará la respuesta desde el BT boolENCENDIDO;ENCENDIDO; //guardará que debe de dejar la luz encendida boolPONERALARMA;PONERALARMA; //guardará que las alarmas están activas StringQUESENSOR;QUESENSOR; //guarda qué sensor se ha disparado; boolDISPARO;DISPARO; //guardará que ha ocurrido un disparo de alarma /////////////////////////////////////FUNCIONES voidCerrarPuerta(CerrarPuerta(); voidAlarma(Alarma(StringQue)Que); ////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////INICIO ////////////////////////// ////////////////////////////////////////////////////////////////////////// voidsetup(setup() { Serial.begin(9600)begin(9600); //inicializar el puerto serie del ordenador ////////////////////////////////fijar input/outputpinMode(PULSADORTIMBRE,pinMode(PULSADORTIMBRE,INPUT)INPUT);pinMode(TIMBRE,pinMode(TIMBRE,OUTPUT)OUTPUT);pinMode(PUERTA,pinMode(PUERTA,OUTPUT)OUTPUT);pinMode(AZUL,pinMode(AZUL,OUTPUT)OUTPUT);pinMode(ROJO,pinMode(ROJO,OUTPUT)OUTPUT);pinMode(VERDE,pinMode(VERDE,OUTPUT)OUTPUT);pinMode(LED,OUTPUT)pinMode(LED,OUTPUT);pinMode(AGUA,INPUT)pinMode(AGUA,INPUT);pinMode(LLAMA,INPUT)pinMode(LLAMA,INPUT);pinMode(LASER,OUTPUT)pinMode(LASER,OUTPUT); ///////////////////////////////fijar situación inicialdigitalWrite(TIMBRE,HIGH)digitalWrite(TIMBRE,HIGH); // timbre apagadomyservo.attach(PUERTA)myservo.attach(PUERTA); //servo en el pin correspondientemyservo.write(CERRADO)myservo.write(CERRADO); //puerta cerrada PUERTAABIERTA =falsefalse; digitalWrite(AZUL,LOW);digitalWrite(AZUL,LOW);//luz rgb apagada digitalWrite(ROJO,LOW);digitalWrite(ROJO,LOW);//luz rgb apagada digitalWrite(VERDE,LOW);digitalWrite(VERDE,LOW);//luz verde apagada digitalWrite(LASER,LOW);digitalWrite(LASER,LOW);PONERALARMAPONERALARMA= false; DISPARO =false;false;DISPAROQUESENSOR =false;QUESENSOR=""; } ////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////BUCLE /////////////////////////// ////////////////////////////////////////////////////////////////////////// voidloop(loop() { //////////////////////////// timbre //////////////////////////////////////// if (digitalRead(PULSADORTIMBREdigitalRead(PULSADORTIMBRE))){ Serial.println(println("Abriendo puerta .... ");PUERTAABIERTA=truePUERTAABIERTA=true; myservo.write(ABIERTO);myservo.write(ABIERTOdelay(3000); CerrarPuerta();delay(3000);}CerrarPuerta();}////////// pulsadorjoystick abrir y cerrar la puerta ////////////////////// intvalor=analogRead(JOYSTICKSW)valor=analogRead(JOYSTICKSW); //Serial.println(valor); if (valorvalor==0){ delay(QUITAREBOTES); valor=analogRead(JOYSTICKSW); if (valor==0)0){delay(QUITAREBOTES);valor=analogRead(JOYSTICKSW);if(valor==0){Serial.println(println("//////////////HAS PULSADO EL BOTÓN DEL JOYSTICK");command=command="boton"; } } if (commandcommand==="boton"){ if (!PUERTAABIERTA)PUERTAABIERTA){ Serial.println(println("Abriendo puerta .... ");PUERTAABIERTAPUERTAABIERTA=true; myservo.write(ABIERTO); }else{ CerrarPuerta(); } } command =true;myservo.write(ABIERTO);}else{CerrarPuerta();}}command=""; //////////// juego luces joystick ////////////////////////////////////////// int valorAz =analogReadanalogRead(JOYSTICKAZUL); valorAz = (JOYSTICKAZUL)valorAz-500)/2.5; if (valorAz<5) valorAz =0; if (!ENCENDIDO)analogWrite(AZUL,valorAz);valorAzint valorRo = analogRead(JOYSTICKROJO); valorRo = (valorAz-500)valorRo-550)/2.55; if (valorRo<5) valorRo =0; if (!ENCENDIDO) analogWrite(ROJO,valorRo);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(AGUAdigitalRead(AGUA))){Alarma(Alarma("AGUA !!!"); if (PUERTAABIERTAPUERTAABIERTA) CerrarPuerta();CerrarPuerta();}}/////////////// ALARMA FUEGO y LASER ///////////////////////////////////// if (PONERALARMA)PONERALARMA){digitalWritedigitalWrite(VERDE,HIGH); digitalWrite(LASER,HIGH); if (VERDE,HIGH);digitalWrite(LASER,HIGH);if(digitalRead(LLAMA)digitalRead(LLAMA)==0)0){DISPARODISPARO=true; QUESENSOR =true;QUESENSOR=" ########## FUEGO ##########"; } if (800<analogRead(LDRanalogRead(LDR))){DISPARODISPARO=true; QUESENSOR =true;QUESENSOR=" ########## LADRON ##########"; } ////////////// DISPARO ////////////// if (DISPARO)DISPARO)Alarma(QUESENSOR)Alarma(QUESENSOR); }else{else{digitalWrite(VERDE,LOW)digitalWrite(VERDE,LOW);digitalWrite(LASER,LOW)digitalWrite(LASER,LOW); } ////////////// ONOFF ///////////////valorvalor=analogRead(ONOFF); if (valor==analogRead0){ delay(QUITAREBOTES); valor=analogRead(ONOFF); if (ONOFF);if(valorvalor===0)0){delay(QUITAREBOTES);valor=analogRead(ONOFF);if(valor==0){Serial.println(println("//////////////HAS PULSADO EL BOTÓN ON/OFF ALARMA ////////////////"); if (PONERALARMA)PONERALARMA){PONERALARMAPONERALARMA=false; DISPARO =false;DISPAROfalse;=}else{false;PONERALARMA=true; }else{PONERALARMA=true;} } }}}////////////////////////////////////////////////////////////////////////// //////////////////////////////////FUNCION CERRAR PUERTA//////////////////// ////////////////////////////////////////////////////////////////////////// voidCerrarPuertaCerrarPuerta(){ if ()PUERTAABIERTA){iffor (PUERTAABIERTA){intfor(inti=1;i=1;i<=3;i3;i+++){ Serial.println(println("CERRANDO PUERTA !!!");digitalWrite(LED,HIGH)digitalWrite(LED,HIGH);digitalWrite(TIMBRE,LOW)digitalWrite(TIMBRE,LOW);delay(1000)delay(1000);digitalWrite(TIMBRE,HIGH)digitalWrite(TIMBRE,HIGH);digitalWrite(LED,LOW)digitalWrite(LED,LOW);delay(1000)delay(1000); }myservo.write(CERRADO)myservo.write(CERRADO);PUERTAABIERTA=false;PUERTAABIERTA=false; Serial.println(println("Puerta cerrada"); } } ////////////////////////////////////////////////////////////////////////// //////////////////////////////////FUNCION ALARMA /////////////////// ////////////////////////////////////////////////////////////////////////// voidAlarmaAlarma(String Que){ for (StringintQue){ifor=(int1;i=1;i<=1010;i++){ digitalWrite(TIMBRE,LOW);i++){digitalWrite(TIMBRE,LOW)digitalWrite(LED,HIGH);digitalWrite(LED,HIGH);StringStringmensaje=mensaje="ALARMA !!!!!!"+Que;Que; Serial.println(mensaje)println(mensaje);delay(100)delay(100);digitalWrite(TIMBRE,HIGH)digitalWrite(TIMBRE,HIGH);digitalWrite(LED,LOW)digitalWrite(LED,LOW);mensaje=mensaje="ATENCIÓN !!!!!!"+Que;Que; Serial.println(mensaje)println(mensaje);delay(100)delay(100); } }