2014/11/09

Arduino RF Wireless Message Display Using I2C LCD Keypad Shield

The function of this sketch is same as the sketch posted on May. 11, 2014, but using I2C LCD Keypad Shield as the output device.

Sketch

/*
SimpleReceiveI2CLCD
This sketch displays text strings received using VirtualWire
Connect the Receiver data pin to Arduino pin 11
Modified by Befun Hung on Nov. 09, 2014 
Use I2C LCD Keypad Shield as the output
*/

#include <VirtualWire.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// #define BACKLIGHT_PIN 13
LiquidCrystal_I2C lcd(0x20); //Set the LCD I2C address
// LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE);

byte message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages
byte messageLength = VW_MAX_MESSAGE_LEN; // the size of the message
unsigned long counter = 1;

void setup()
{
  // pinMode(BACKLIGHT_PIN, OUTPUT);
  // digitalWrite(BACKLIGHT_PIN, HIGH);
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2); //initialize the lcd
  // Print a message to the LCD.
  lcd.home(); //go home
  lcd.print("Device is ready!");
  // 
  Serial.begin(9600);
  Serial.println("Device is ready");
  // Initialize the IO and ISR
  vw_setup(2000); // Bits per sec
  vw_rx_start(); // Start the receiver
}
void loop()
{
  if (vw_get_message(message, &messageLength)) // Non-blocking
  {
    lcd.clear();
    Serial.print(counter);
    Serial.print(": ");
    // set the cursor to column 0, line 1
    // (note: line 1 is the second row, since counting begins with 0):
    lcd.setCursor(0, 0);
    lcd.print(counter);
    lcd.print(":");
    lcd.setCursor(0,1);
    for (int i = 0; i < messageLength; i++)
    {
      Serial.write(message[i]);
      lcd.print(char(message[i]));
    }
    Serial.println();
    counter++;
  }
}