Advertisement
Villalba2006

POST_48

Nov 28th, 2016
1,936
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.56 KB | None | 0 0
  1. /*  TITULO: Controlando LEDS con un mando a distancia y un receptor IR.
  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.     Este programa nos sirve para controlar dos LEDS desde un mando a distancia IR.
  14.     - Botón (-) --> Se enciende el LED ROJO.
  15.     - Botón (+) --> Se enciende el LED AZUL.
  16.     - Botón EQ --> Se apagan los dos LEDS.
  17.    
  18.    
  19.     ESQUEMA DE CONEXION
  20.    
  21.                                       +-----+
  22.          +----[PWR]-------------------| USB |--+
  23.          |                            +-----+  |
  24.          |         GND/RST2  [ ][ ]            |
  25.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |    
  26.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |    
  27.          |                             AREF[ ] |
  28.          |                              GND[ ] |
  29.          | [ ]N/C                    SCK/13[ ] |  
  30.          | [ ]IOREF                 MISO/12[ ] |  
  31.          | [ ]RST                   MOSI/11[ ]~|  
  32.          | [ ]3V3    +---+               10[ ]~|  
  33.          | [ ]5v    -| A |-               9[ ]~|  
  34.          | [ ]GND   -| R |-               8[ ] |  
  35.          | [ ]GND   -| D |-                    |
  36.          | [ ]Vin   -| U |-               7[ ] |  
  37.          |          -| I |-               6[ ]~|  
  38.          | [ ]A0    -| N |-               5[ ]~|  
  39.          | [ ]A1    -| O |-               4[ ] |   LED_ROJO(+)
  40.          | [ ]A2     +---+           INT1/3[ ]~|   LED_AZUL(+)
  41.          | [ ]A3                     INT0/2[ ] |   Pin "S" (datos) del receptor IR
  42.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  43.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  44.          |            [ ] [ ] [ ]              |
  45.          |  UNO_R3    GND MOSI 5V  ____________/
  46.           \_______________________/
  47.  
  48.   NOTAS:
  49.    
  50.    - Alimentación del módulo receptor IR  modelo AX 1838HS:
  51.      - Pin central del receptor IR --> VCC de Arduino
  52.      - Pin (-) del receptor IR --> GND de Arduino  
  53.    - Cátodos(-) de los LEDS a GND a través de una R=220 omhs (diferente para cada uno).
  54.  
  55. */
  56.  
  57.   // Incluimos la librería IR
  58.   #include <IRLremote.h>
  59.  
  60.   // Pin digital 2 (INT0: Interrupción 0) --> Terminal de datos (S) del receptor IR
  61.   const int interruptIR = 0;
  62.  
  63.   // Variables para recibir los datos
  64.   uint8_t Protocolo = 0;  
  65.   uint16_t Direccion = 0;
  66.   uint32_t Comando = 0;
  67.  
  68.   int LED_AZUL = 3; // Pin digital para el LED de color azul
  69.   int LED_ROJO = 4; // Pin digital para el LED de color rojo
  70.    
  71.  
  72.   void setup()
  73.   {
  74.     Serial.begin(115200);  // Comienzo de la comunicación serie
  75.    
  76.     pinMode(LED_AZUL, OUTPUT); // Pin digital 3 como salida
  77.     pinMode(LED_ROJO, OUTPUT); // Pin digital 4 como salida
  78.    
  79.     Serial.println("Esperando lecturas IR...\n");
  80.     IRLbegin<IR_ALL>(interruptIR); // Comienzo de la recepción IR
  81.   }
  82.  
  83.   void loop()
  84.   {
  85.     // Si se ha leido un protocolo existente en la librería  
  86.     if(Protocolo)
  87.     {
  88.       // Se presentan valores de protocolo, dirección y comando IR.
  89.       Serial.println("-------------------------------");
  90.       Serial.print("Protocolo:");
  91.       Serial.println(Protocolo);
  92.       Serial.print("Direccion:");
  93.       Serial.println(Direccion, HEX);
  94.       Serial.print("Comando:");
  95.       Serial.println(Comando, HEX);
  96.       Serial.println("-------------------------------");
  97.      
  98.       // Dependiendo del valor del comando, estaremos pulsando un botón u otro
  99.       switch(Comando)
  100.       {
  101.         case 0xE01F:
  102.           Serial.println("Boton -");
  103.           digitalWrite(LED_ROJO, HIGH);
  104.           break;
  105.         case 0xA857:
  106.           Serial.println("Boton +");
  107.           digitalWrite(LED_AZUL, HIGH);                
  108.           break;
  109.         case 0x906F:
  110.           Serial.println("Boton EQ");
  111.           digitalWrite(LED_ROJO, LOW);
  112.           digitalWrite(LED_AZUL, LOW);
  113.           break;
  114.         default:
  115.           Serial.println("Boton sin etiquetar");
  116.           break;
  117.       }
  118.       Serial.println("-------------------------------");
  119.       Protocolo = 0;
  120.     }
  121.   }
  122.  
  123.   // Rutina de servicio de la interrupción INT 0 --> Pin 2 de Arduino
  124.   void IREvent(uint8_t protocol, uint16_t address, uint32_t command)
  125.   {
  126.     // Se guardan los valores de protocolo, dirección y comando recibidos
  127.     Protocolo = protocol;  
  128.     Direccion = address;
  129.     Comando = command;
  130.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement