Si quieres comunicar dos Arduinos de manera inalambrica usando modulos de radio frecuencia la librería Virtual Wire te ayudará enormemente a la hora establecer la comunicación.
Lo primero que necesitas es descargar la librería, puedes hacerlo desde nuestra sección de descargas e instalarla. Si no tienes claro como hacer esto ultimo puedes consultar nuestro tutorial Instalar librerías para Arduino.
Esta librería nos provee de una serie de funciones que nos serán muy útiles a la hora de crear nuestros proyectos:
Veamos un ejemplo de como usar esta librería:
![]() | ![]() |
Receptor | Emisor |
---|
Código del Arduino receptor.
#include <VirtualWire.h> const int led_pin = 13; const int transmit_pin = 12; const int receive_pin = 11; const int transmit_en_pin = 3; void setup(){ delay(1000); Serial.begin(9600); Serial.println("setup"); // Initialise the IO and ISR vw_set_tx_pin(transmit_pin); vw_set_rx_pin(receive_pin); vw_set_ptt_pin(transmit_en_pin); vw_set_ptt_inverted(true); vw_setup(2000); // Bits per sec vw_rx_start(); // iniciamos la recepcion pinMode(led_pin, OUTPUT); } void loop(){ uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)){ int i; digitalWrite(led_pin, HIGH); // encendemos el led cuando recibimos Serial.print("mensaje: "); //bucle que muestra el contenido del array recibido for (i = 0; i < buflen; i++){ Serial.print(buf[i],DEC); Serial.print(' '); } Serial.println(); digitalWrite(led_pin, LOW); } }
Código del Arduino emisor.
#include <VirtualWire.h> const int sensor = 6; const int led_pin = 11; const int transmit_pin = 12; const int receive_pin = 2; const int transmit_en_pin = 3; void setup(){ // Initialise the IO and ISR vw_set_tx_pin(transmit_pin); vw_set_rx_pin(receive_pin); vw_set_ptt_pin(transmit_en_pin); vw_set_ptt_inverted(true); // Required for DR3100 vw_setup(2000); // Bits per sec pinMode(led_pin, OUTPUT); } byte count = 1; //inicializamos el contador de envios void loop(){ int msg[1] = {1,2,3,4,5,6}; //Creamos un array de numeros que enviaremos msg[6] = count;//Colocamos el contador de envios en la posicion 6 del array digitalWrite(led_pin, HIGH); // Encendemos el Led mientras transmitimos vw_send((uint8_t *)msg, 7); //Enviamos el array vw_wait_tx(); // Esperamosa a que el mensaje se envie digitalWrite(led_pin, LOW); //Apagamos el led una vez el envio esta completo delay(1000); //Esperamos antes de volver a emitir count = count + 1; //sumamos uno al contador de envios }