Villalba2006

POST_66

Nov 29th, 2016
3,392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.09 KB | None | 0 0
  1. /*  TITULO: Alarma de seguridad láser con mini altavoz y LED incorporados.
  2.  
  3.     AUTOR:
  4.    
  5.     MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
  6.     - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
  7.     - TWITTER: https://twitter.com/MarianoCampoGa
  8.     - CORREO: [email protected]
  9.    
  10.    
  11.     DESCRIPCIÓN DEL PROGRAMA
  12.    
  13.     En este programa, cuando el receptor láser (fotoreceptor) no está recibiendo el rayo dispuesto por el emisor
  14.     láser, es decir, existe algún objeto o cuerpo entre el receptor y el emisor láser, el arduino emite una alarma
  15.     acústica, a través del altavoz, además de encender dos LED (Azul y naranja) alternamente cada 100ms (20 veces).
  16.  
  17.        
  18.     ESQUEMA DE CONEXION
  19.    
  20.                                       +-----+
  21.          +----[PWR]-------------------| USB |--+
  22.          |                            +-----+  |
  23.          |         GND/RST2  [ ][ ]            |
  24.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |    
  25.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |    
  26.          |                             AREF[ ] |
  27.          |                              GND[ ] |
  28.          | [ ]N/C                    SCK/13[ ] |  
  29.          | [ ]IOREF                 MISO/12[ ] |  
  30.          | [ ]RST                   MOSI/11[ ]~|  
  31.          | [ ]3V3    +---+               10[ ]~|  
  32.          | [ ]5v    -| A |-               9[ ]~|  
  33.          | [ ]GND   -| R |-               8[ ] |  
  34.          | [ ]GND   -| D |-                    |
  35.          | [ ]Vin   -| U |-               7[ ] |   Pin "OUT" del módulo receptor Láser
  36.          |          -| I |-               6[ ]~|   Pin "S" del módulo emisor Láser
  37.          | [ ]A0    -| N |-               5[ ]~|   Altavoz(+)
  38.          | [ ]A1    -| O |-               4[ ] |   LED_AZUL(+)
  39.          | [ ]A2     +---+           INT1/3[ ]~|   LED_NARANJA(+)
  40.          | [ ]A3                     INT0/2[ ] |  
  41.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  42.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  43.          |            [ ] [ ] [ ]              |
  44.          |  UNO_R3    GND MOSI 5V  ____________/
  45.           \_______________________/
  46.  
  47.   NOTAS:
  48.  
  49.    - Cátodo(-) de los LED (pata más corta) a GND a través de una R=220 ohms (diferente para cada uno).
  50.    - Altavoz(-) a GND.
  51.    - Alimentación y masa tanto del módulo emisor láser como del módulo receptor láser, los conectamos a
  52.      +5VDC y GND de Arduino respectivamente.
  53. */
  54.  
  55.   int LED_NARANJA = 3; // Pin digital para el LED_NARANJA(+)
  56.   int LED_AZUL = 4;  // Pin digital para el LED_AZUL(+)
  57.   int Altavoz = 5; // Pin digital para el Altavoz(+)
  58.   int Laser = 6; // Pin digital para el pin "S" del módulo emisor Láser
  59.   int Detector = 7; // Pin digital para el pin "OUT" del módulo receptor Láser
  60.   int i = 0; // Variable para el contador del Altavoz
  61.  
  62.   void setup()
  63.   {
  64.     pinMode(Detector, INPUT); // Pin digital 7 como entrada
  65.     pinMode(Laser, OUTPUT); // Pin digital 6 como salida
  66.     pinMode(Altavoz, OUTPUT); // Pin digital 5 como salida    
  67.     pinMode(LED_AZUL, OUTPUT); // Pin digital 4 como salida
  68.     pinMode(LED_NARANJA, OUTPUT); // Pin digital 3 como salida
  69.   }
  70.  
  71.   void loop()
  72.   {
  73.     // Encendemos el emisor láser
  74.     digitalWrite(Laser, HIGH);
  75.    
  76.     if(digitalRead(Detector) == LOW) // Cuando el rayo láser no incide en el receptor
  77.     {
  78.       // Durante 20 veces
  79.       for (i=0; i<=20; i++)
  80.       {        
  81.         suenaTono(300,160); // Suena el altavoz
  82.         digitalWrite(LED_AZUL, HIGH); // LED_AZUL encendido
  83.         digitalWrite(LED_NARANJA, LOW); // LED_NARANJA apagado
  84.         delay(150); // Tiempo entre sonidos de la alarma
  85.         digitalWrite(LED_AZUL, LOW); // LED_AZUL apagado
  86.         digitalWrite(LED_NARANJA, HIGH); // LED_NARANJA encendido
  87.       }    
  88.     }
  89.     else // Cuando el rayo láser incide en el receptor
  90.     {
  91.       suenaTono(0,0); // No suena el altavoz
  92.       digitalWrite(LED_AZUL, LOW); // LED_AZUL apagado
  93.       digitalWrite(LED_NARANJA, LOW); // LED_NARANJA apagado  
  94.     }  
  95.   }
  96.  
  97.   // Función que hace sonar el Altavoz: Duración (ms) y frecuencia (hercios)
  98.   void suenaTono(long duracion, int frecuencia)
  99.   {
  100.     // Multiplicamos por mil para pasar la duración de milisegundos (ms) a microsegundos (us)
  101.     duracion *= 1000;
  102.     // Multiplicamos por un millón para pasar el periodo de segundos (s) a microsegundos (us)
  103.     int periodo = (1.0 / frecuencia) * 1000000; // Calcula el periodo
  104.     // Inicializamos el tiempo transcurrido
  105.     long tiempo_transcurrido = 0;
  106.     // Mientras el tiempo transcurrido sea menor que la duración
  107.     while (tiempo_transcurrido < duracion)
  108.     {
  109.       // La mitad del periodo suena el altavoz y la otra mitad no suena
  110.       digitalWrite(Altavoz,HIGH); // Altavoz activado
  111.       delayMicroseconds(periodo / 2); // Retardo en microsegundos (us)
  112.       digitalWrite(Altavoz, LOW); // Altavoz desactivado
  113.       delayMicroseconds(periodo / 2); // Retardo en microsegundos (us)
  114.       // Actualizamos el tiempo transcurrido
  115.       tiempo_transcurrido += (periodo);
  116.     }
  117.   }
Advertisement
Add Comment
Please, Sign In to add comment