Virtual Wire e LCD

Ciao a tutti, sto cercando di trasferire dati da un Arduino con un sensore di prossimità ad un altro Arduino tramite un modulo Wifi a 433MHz. Ho inizialmente visualizzato i dati arrivati sul monitor del PC, con successo, ma ora vorrei usare un LCD per leggerli. Purtroppo con LCD non riesco a visualizzare i dati.
Qui di seguito il mio sketch, ringrazio in anticipo tutti.

/* Collegamenti:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2  
*/

/*
  Con questo shield arduino riceve il valore della tensione rilevata che viene trasmesso
  dall'altro shield denominato trasmissione.
  In questo caso il modulo RX si connette ad arduino al pin 11.
*/
#include <VirtualWire.h> 
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);


const int led_pin = 13;
const int transmit_pin = 12;
const int receive_pin = 10;  //prima era 11
const int transmit_en_pin = 9;  //prima era =3

byte message[VW_MAX_MESSAGE_LEN];    // a buffer to hold the incoming messages
byte msgLength = VW_MAX_MESSAGE_LEN; // the size of the message


void setup()
{    
    lcd.begin(16, 2);
    lcd.print("inizio...");
    delay(1000);
    Serial.begin(9600);  // Debugging only
    //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); // Required for DR3100
    vw_setup(2000);  // Bits per sec

    vw_rx_start();       // Start the receiver PLL running

    pinMode(led_pin, OUTPUT);
}

void loop()
{
    if (vw_get_message(message, &msgLength)) // Non-blocking
    {    digitalWrite(led_pin, HIGH); // Flash a light to show received good message
  // Message with a good checksum received, dump it.
        //Serial.print("Distanza : ");
    for (int i = 0; i < msgLength; i++)
    {
        //Serial.write(message[i]);
        lcd.clear();
        lcd.print(message[i]);
    }
    //Serial.println();
      digitalWrite(led_pin, LOW);
    }
}

Sketch ricevitore con lcd.txt (1.34 KB)

Nel for di visualizzazione per ogni carattere stampato invochi prima il clear dello schermo LCD, è ovvio che che non riesci a leggere.

Nonostanza abbia levato lcd.clear() non riesco lo stesso a visualizzare la distanza. Mi compaiono caratteri che sembrano essere cinesi... Qualche idea?

Evidentemente i byte che stampi non sono caratteri ASCII, quindi ti conviene passare alla visualizzazione numerica:

lcd.print(message*, DEC);* oppure lcd.print(message*, HEX);*

Provato anche questo ma niente... forse devo prima convertire il byte in char e poi visualizzare il char?

Ho notato che se metto lcd.begin(16, 2); e lcd.print("inizio..."); dopo l'inizializzazione della libreria VirtualWire non vedo niente sul LCD...

Qualche buon'anima che mi dia una mano? Grazie.