Advertisement
Villalba2006

POST_66

Nov 29th, 2016
3,329
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: marianodc83@gmail.com
  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
Advertisement