Advertisement
Villalba2006

POST_50_Receptor

Nov 28th, 2016
3,665
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.31 KB | None | 0 0
  1. /*  TITULO: Enviando mensajes de texto mediante módulos RF a 433MHz - CÓDIGO PARA EL RECEPTOR
  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 vamos mostrar una serie de caracteres (máximo 32) a través de un Display LCD 16x2,
  14.     que tenemos conectado mediante comunicación I2C al "Arduino Receptor". Los caracteres son recibidos
  15.     mediante el módulo Receptor RF conectado al pin digital 11 de nuestro "Arduino Receptor". Estos
  16.     caracteres provienen del monitor serie del "Arduino Emisor".
  17.    
  18.    
  19.  
  20.     ESQUEMA DE CONEXION
  21.    
  22.                                       +-----+
  23.          +----[PWR]-------------------| USB |--+
  24.          |                            +-----+  |
  25.          |         GND/RST2  [ ][ ]            |
  26.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |   SCL del módulo I2C
  27.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |   SDA del módulo I2C
  28.          |                             AREF[ ] |
  29.          |                              GND[ ] |
  30.          | [ ]N/C                    SCK/13[ ] |  
  31.          | [ ]IOREF                 MISO/12[ ] |  
  32.          | [ ]RST                   MOSI/11[ ]~|   Pin DATA del módulo Receptor RF XD-RF-5V
  33.          | [ ]3V3    +---+               10[ ]~|  
  34.          | [ ]5v    -| A |-               9[ ]~|  
  35.          | [ ]GND   -| R |-               8[ ] |  
  36.          | [ ]GND   -| D |-                    |
  37.          | [ ]Vin   -| U |-               7[ ] |  
  38.          |          -| I |-               6[ ]~|  
  39.          | [ ]A0    -| N |-               5[ ]~|  
  40.          | [ ]A1    -| O |-               4[ ] |  
  41.          | [ ]A2     +---+           INT1/3[ ]~|  
  42.          | [ ]A3                     INT0/2[ ] |  
  43.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  44.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  45.          |            [ ] [ ] [ ]              |
  46.          |  UNO_R3    GND MOSI 5V  ____________/
  47.           \_______________________/
  48.  
  49.   NOTAS:
  50.    - La alimentación y la masa tanto del módulo Emisor RF XD-RF-5V como del módulo LCM 1602 I2C V1, van
  51.      directamente conectadas a VCC (+5V) y GND respectivamente.  
  52. */
  53.  
  54.   // Librería necesaria para el funcionamiento del programa
  55.   #include <Wire.h> // Librería comunicación I2C
  56.   #include <LiquidCrystal_I2C.h>
  57.   #include <VirtualWire.h>
  58.  
  59.   // Declaración del objeto
  60.   // Poner la dirección del LCD a 0x27 para display 16x2, 20x2 y 20x4
  61.   // Terminales de conexión del LCD
  62.   //                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
  63.   LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
  64.  
  65.   // Variables globales:
  66.   int i;
  67.        
  68.   void setup()
  69.   {
  70.       lcd.begin(16,2);   // Inicializa el LCD para 16x2
  71.       lcd.setCursor(0,0);  // Se pone el cursor en la primera posición de la pantalla.
  72.  
  73.       vw_set_ptt_inverted(true); // Inicializa el software de VirtualWire
  74.       vw_setup(2000); // Velocidad de comunicación (Bits por segundo)
  75.       vw_set_rx_pin(11); // Pin digital para la recepción del mensaje (por defecto será el pin 11).
  76.       vw_rx_start(); // Arrancamos el Receptor
  77.   }
  78.  
  79.   void loop()
  80.   {
  81.     byte buf[VW_MAX_MESSAGE_LEN]; // Se crea una matriz de tipo byte de 80 componentes
  82.     // Se indica que el tamaño de la matriz será de hasta 80 (Hay que modificarlo en la librería <VirtualWire.h>)
  83.     byte buflen = VW_MAX_MESSAGE_LEN;    
  84.      
  85.     // Si se recibe un mensaje desde el Arduino Emisor,
  86.     if(vw_get_message(buf, &buflen)) // Devolverá por valor un true y por referencia el mensaje y el tamaño.
  87.     {
  88.       lcd.clear();
  89.       lcd.setCursor(0,0);
  90.          
  91.       // Se imprime por el LCD 1602 componente a componente de la matriz, hasta que se llegue al final.
  92.       for (i = 0; i < buflen-1; i++)
  93.       {
  94.         if(((char)buf[i]!='\r')&&((char)buf[i]!='\n'))
  95.         {
  96.           lcd.print((char)buf[i]);
  97.         }  
  98.        
  99.         // Cuando llegamos a la posición 16 de la matriz, cambiamos a la segunda fila del LCD 1602
  100.         if(i == 16)
  101.         {
  102.           lcd.setCursor(0,1);
  103.         }
  104.       }
  105.     }
  106.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement