Trasformatore Amperometrico(TA) + Module RF433 + display LCD

Sono abbastanza un neofita di arduino e sto cercando di fare qualche cosa più grande di me…
Ho bisogno di costruire un amperometro con lettura via radio dei dati.
La mia intenzione è di collegare 3 TA ad altrettante ING Analogiche della scheda e via RF inviare i dati ad un mini arduino con display LCD.

Ho trovato questo sketch che va alla grande:

TX
/*
PAGINA 428 LIBRO ARDUINO COOKBOOK
ReceiveBinary
This sketch receives six integer values as binary data
Connect the TX data pin to Arduino pin 12
*/

#include <VirtualWire.h>

const int numberOfAnalogPins = 3; // how many analog pins to read
int data[numberOfAnalogPins]; // the data buffer
const int dataBytes = numberOfAnalogPins * sizeof(int); // the number of bytes in the data buffer

void setup()
{
// Initialize the IO and ISR
vw_setup(2000); // Bits per sec
}

void loop()
{
int values = 0;
for(int i=0; i <= numberOfAnalogPins; i++)
 {
// read the analog ports
data[i] = analogRead(i); // store the values into the data buffer
 }
send((byte*)data, dataBytes);
delay(1000); //send every second
 }
void send (byte *data, int nbrOfBytes)
 {
vw_send(data, nbrOfBytes);
vw_wait_tx(); // Wait until the whole message is gone
}



RX
/*
PAGINA 428 LIBRO ARDUINO COOKBOOK
ReceiveBinary
This sketch receives six integer values as binary data
Connect the Receiver data pin to Arduino pin 11
*/
#include <VirtualWire.h>
/*
SendBinary
Sends digital and analog pin values as binary data using VirtualWire library
See SendBinary in Chapter 4
*/
#include <VirtualWire.h>
const int numberOfAnalogPins = 3; // how many analog integer values to receive
int data[numberOfAnalogPins]; // the data buffer
// the number of bytes in the data buffer
const int dataBytes = numberOfAnalogPins * sizeof(int);
byte msgLength = dataBytes;
void setup()
{
  Serial.begin(9600);
Serial.println("Ready");
// Initialize the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
vw_rx_start(); // Start the receiver
}
void loop()
{
if (vw_get_message((byte*)data, &msgLength)) // Non-blocking
 {
Serial.println("Got: ");
if(msgLength == dataBytes)
  {
for (int i = 0; i < numberOfAnalogPins; i++)
   {
Serial.print("pin ");
Serial.print(i);
Serial.print("=");
Serial.println(data[i]);
   }
  }
else
  {
Serial.print("unexpected msg length of ");
Serial.println(msgLength);
  }
Serial.println();
 }
}

Ma ho due ostacoli da superare…
Il primo è che con questo sketch viene inviato un “pacchetto” di dati ed io ho bisogno di agire singolarmente sui 3 ing analogici per tradurre il valore tra 0 e 1024 in un valore di corrente, il secondo problema è che adesso vedo i dati solo su PC mentre ho bisogno di leggerli su un display LCD seriale.

Qualcuno ha esperienza in merito e mi può aiutare?
Grazie

ho fatto un passo in avanti…
Sono riuscito a “spacchettare” i dati dell’arrey, riesco a visualizzare i dati sull’LCD, però la visualizzazione è assolutamente caotica.

/*
PAGINA 428 LIBRO ARDUINO COOKBOOK
ReceiveBinary
This sketch receives six integer values as binary data
Connect the Receiver data pin to Arduino pin 11
*/
#include <VirtualWire.h>
#include <SerialLCD.h> 
#include <SoftwareSerial.h> 
SerialLCD slcd(12,13);
#include "EmonLib.h"                   // Include Emon Library
EnergyMonitor emon1;                   // Create an instance
EnergyMonitor emon2;                   // Create an instance
EnergyMonitor emon3;                   // Create an instance

/*
SendBinary
Sends digital and analog pin values as binary data using VirtualWire library
See SendBinary in Chapter 4
*/
#include <VirtualWire.h>
const int numberOfAnalogPins = 3; // how many analog integer values to receive
int data[numberOfAnalogPins]; // the data buffer
// the number of bytes in the data buffer
const int dataBytes = numberOfAnalogPins * sizeof(int);
byte msgLength = dataBytes;
void setup()
{
  slcd.begin();
  Serial.begin(9600);
 
Serial.println("Ready");
// Initialize the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
vw_rx_start(); // Start the receiver

   emon1.current(data[0], 111.1);             // Current: input pin, calibration.
   emon2.current(data[1], 111.1);             // Current: input pin, calibration.
   emon3.current(data[2], 111.1);             // Current: input pin, calibration.

}
void loop()
{
if (vw_get_message((byte*)data, &msgLength)) // Non-blocking
 {
Serial.println("Got: ");
  {
  double Irms1 = emon1.calcIrms(1480);  // Calculate Irms only
  Serial.print(" ");
  Serial.println(Irms1);		       // Irms
  double Irms2 = emon2.calcIrms(1480);  // Calculate Irms only
  Serial.print(" ");
  Serial.println(Irms2);		       // Irms
  double Irms3 = emon3.calcIrms(1480);  // Calculate Irms only
  Serial.print(" ");
  Serial.println(Irms3);		       // Irms
  
      {        
  double Irms1 = emon1.calcIrms(1480);  // Calculate Irms only
  slcd.print("L1:");
  slcd.println(Irms1);		       // Irms
  slcd.print("A");

  double Irms2 = emon2.calcIrms(1480);  // Calculate Irms only
  slcd.print("L2:");
  slcd.println(Irms2);		       // Irms
  slcd.print("A");

  double Irms3 = emon3.calcIrms(1480);  // Calculate Irms only
  slcd.print("L3:");
  slcd.println(Irms3);		       // Irms
  slcd.print("A");
  }
  } 
  } 
  }

se provo ad inserire

  slcd.setCursor(1,0);

lo sketch si blocca…

Come posso fare?
Attualmente sto usando un LCD seriale della seeeduino 16x2 e mi piacerebbe vedere una scritta tipo:
L1 L2 L3
10A 15A 18A

Credevo fosse facile…
Grazie