Villalba2006

POST_71_Receptor

Nov 29th, 2016
7,190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.51 KB | None | 0 0
  1. /*  TITULO: Comunicación unidireccional entre Arduinos con módulos NRF24L01
  2.             >> NRF24L01_Unidireccional_Receptor
  3.            
  4.     AUTOR:
  5.    
  6.     MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
  7.     - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
  8.     - TWITTER: https://twitter.com/MarianoCampoGa
  9.     - CORREO: [email protected]
  10.    
  11.    
  12.     DESCRIPCIÓN DEL PROGRAMA
  13.    
  14.     Con este programa controlamos el encendido y apagado de un LED con un solo pulsador, mediante una
  15.     conexión por radiofrecuencia (RF) entre dos Arduinos, a través de módulos NRF24L01.
  16.     Vamos a recibir el valor de la variable estado_pulsador[0] vía RF desde el Arduino Emisor, cada
  17.     vez que se presione el pulsador conectado a él, si esta variable tiene el valor de "1" se enciende
  18.     el LED conectado a este Arduino (receptor) y si vale "0" el LED se apaga. En el supuesto de que nunca
  19.     recibamos ningún valor de la variable estado_pulsador[0], el LED permanecerá apagado (no se ha
  20.     presionado todavía el pulsador del Arduino Emisor).
  21.    
  22.    
  23.     ESQUEMA DE CONEXION
  24.    
  25.                                       +-----+
  26.          +----[PWR]-------------------| USB |--+
  27.          |                            +-----+  |
  28.          |         GND/RST2  [ ][ ]            |
  29.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |    
  30.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |    
  31.          |                             AREF[ ] |
  32.          |                              GND[ ] |
  33.          | [ ]N/C                    SCK/13[ ] |   Pin "SCK" del módulo NRF24L01
  34.          | [ ]IOREF                 MISO/12[ ] |   Pin "MISO" del módulo NRF24L01
  35.          | [ ]RST                   MOSI/11[ ]~|   Pin "MOSI" del módulo NRF24L01
  36.          | [ ]3V3    +---+               10[ ]~|   Pin "CSN" del módulo NRF24L01
  37.          | [ ]5v    -| A |-               9[ ]~|   Pin "CE" del módulo NRF24L01
  38.          | [ ]GND   -| R |-               8[ ] |  
  39.          | [ ]GND   -| D |-                    |
  40.          | [ ]Vin   -| U |-               7[ ] |   LED(+)
  41.          |          -| I |-               6[ ]~|  
  42.          | [ ]A0    -| N |-               5[ ]~|  
  43.          | [ ]A1    -| O |-               4[ ] |  
  44.          | [ ]A2     +---+           INT1/3[ ]~|  
  45.          | [ ]A3                     INT0/2[ ] |  
  46.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  47.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  48.          |            [ ] [ ] [ ]              |
  49.          |  UNO_R3    GND MOSI 5V  ____________/
  50.           \_______________________/
  51.  
  52.   NOTAS:
  53.    - Alimentación del módulo NRF24L01:
  54.      - GND del módulo NRF24L01--> GND de Arduino.
  55.      - VCC del módulo NRF24L01--> +3.3V de Arduino.
  56.    - El pin "IRQ" del modulo NRF24L01 no se conecta a nuestro Arduino.
  57.    - Cátodo(-) del LED (pata más corta) a GND a través de una R=220 ohms.    
  58. */
  59.  
  60.  
  61.   // Incluimos las librerías necesarias
  62.   #include <SPI.h> // Librería para la comunicación SPI
  63.   // Librerías para el funcionamiento del módulo NRF24L01
  64.   #include <nRF24L01.h>
  65.   #include <RF24.h>
  66.  
  67.   // Declaramos los pines de control del módulo NRF24L01
  68.   #define CE 9
  69.   #define CSN 10
  70.  
  71.   // Se crea el objeto tipo RF24
  72.   RF24 radio(CE, CSN);
  73.  
  74.   // Se declara el canal (64 bits en hexadecimal) para transmisión RF
  75.   const uint64_t canal = 0xE8E8F0F0E1LL;
  76.  
  77.   // Variable que enviamos mediante RF (de tipo string siempre)
  78.   unsigned int estado_pulsador[1];
  79.  
  80.   int LED = 7; // Pin digital 7 para el LED
  81.  
  82.   void setup()
  83.   {
  84.     radio.begin();  // Inicialización de la comunicación RF
  85.     radio.openReadingPipe(1, canal); // Se abre el canal para lectura
  86.     radio.startListening(); // Comienza a escuchar por el canal abierto para lectura
  87.     pinMode(LED, OUTPUT); // Pin digital 7 como salida
  88.     digitalWrite(LED, LOW); // Inicialmente el LED se apaga
  89.   }
  90.  
  91.   void loop()
  92.   {
  93.     // Siempre que haya información disponible vía RF... 
  94.     while(radio.available())
  95.     {
  96.       // Se recibe el valor de la variable estado_pulsador[0] a través de RF
  97.       radio.read(estado_pulsador, sizeof(estado_pulsador));
  98.     }
  99.    
  100.     // Si el valor de la variable estado_pulsador[0] es igual a "1" se enciende el LED
  101.     if (estado_pulsador[0] == 1)
  102.     {
  103.       digitalWrite(LED, HIGH);
  104.     }
  105.    
  106.     // Si el valor de la variable estado_pulsador[0] es igual a "0" se apaga el LED
  107.     if (estado_pulsador[0] == 0)
  108.     {
  109.       digitalWrite(LED, LOW);
  110.     }    
  111.   }
Advertisement
Add Comment
Please, Sign In to add comment