Skip to main content

LÁSER

{{@2992#bkmrk-el-diodo-l%C3%A1ser-es-un}}

{{@2992#bkmrk-}}

{{@2992#bkmrk-si-quieres-saber-m%C3%A1s}}

Reto

  • Si activo la alarma el láser tiene que encenderse
    • Una vez activada si se corta el láser, por lo tanto el valor del LDR sube, la alarma se dispara.
  • Si desactivo la alarma
    • La alarma se apaga si se ha disparado
    • El laser de apaga.
Solución vídeo

Solución maqueta

{{@2992#bkmrk-en-este-caso-hay-que}}

{{@2992#bkmrk-hemos-utilizado-dos-}}

{{@2992#bkmrk--1}}

Solución conexiones eléctricas
  • La alimentación del láser y el del LDR igual que en los casos anteriores
  • El control del LÁSER a la salida digital D10
  • La lectura del LDR a la entrada analógica A0

Solución código

https:///////////////////////////////////////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 LASER=10;               //diodo LASER const int LED = 13; ////////////////////////////////////// ENTRADAS ANALÓGICAS /////////////////////// const int LDR = 0;               //sensor luz LDR 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/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);  pinMode(LLAMA,INPUT);  pinMode(LASER,OUTPUT);  ///////////////////////////////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    digitalWrite(LASER,LOW);  PONERALARMA = 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";      }  }  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();  }  /////////////// ALARMA FUEGO y LASER /////////////////////////////////////  if (PONERALARMA){    digitalWrite(VERDE,HIGH);    digitalWrite(LASER,HIGH);         if (digitalRead(LLAMA)==0){      DISPARO=true;      QUESENSOR =" ########## FUEGO ##########";    }    if (800<analogRead(LDR)){      DISPARO=true;      QUESENSOR =" ########## LADRON ##########";    }    ////////////// DISPARO //////////////    if (DISPARO) Alarma(QUESENSOR);  }else{    digitalWrite(VERDE,LOW);     digitalWrite(LASER,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);    } }

create.arduino.cc/editor/javierquintana/dfca79db-6299-47c1-beef-7db3350c2cee/preview