Invio di più dati con Serial

Buonasera, ho provato a cercare nel forum e altrove ma non ho trovato nulla di a me comprensibile o che facesse pienamente al caso mio.
Illustro il problema: voglio creare una centralina di acquisizione dati, ho letture da vari sensori che salvo su SD tramite OpenLog (SparkFun OpenLog - DEV-13712 - SparkFun Electronics) quindi scrivendo i valori tramite Serial.print.
Inoltre vorrei visualizzare i valori su uno schermo LCD TFT però per velocizzare il ciclo e aumentare il numero di letture dei sensori, lo schermo deve essere gestito da un altro Arduino che dovrebbe leggere i valori tramite la comunicazione che invio a OpenLog e scriverli.
Come devo impostare lo sketch sia sull'Arduino che scrive sia su quello che riceve?

Ho provato anche utilizzando l'esempio"ReadASCIIString" dell'IDE di arduino, con ParseInt() e ParseFloat() riesco a fare quello che mi serve ma solo se scrivo da monitor seriale, se provo a fare l'invio da un altro Arduino non mi appare nulla.
l'arduino che riceve i dati:

void setup() {
  Serial1.begin(9600);
  Serial.begin(9600);
}

void loop() {
  while (Serial1.available() > 0) {

    float red = Serial1.parseFloat();
    int green = Serial1.parseInt();
    int blue = Serial1.parseInt();

    if (Serial1.read() == '\n') {

      Serial.print(red);
      Serial.print(",");
      Serial.print(green);
      Serial.print(",");
      Serial.println(blue);
    }
  }
}

l'Arduino che manda i dati:

float a = 22.23;
int b = 24;
int c = 25;
void setup() 
{
 Serial.begin(9600); // connessione con il monitor seriale
 
}

void loop() 
{
Serial.print(a);
 Serial.print(",");
 Serial.print(b);
 Serial.print(",");
 Serial.print(c);
 Serial.println();
 delay(2000);
}

Grazie mille a chi saprà aiutarmi.

Penso di aver risolto così (per ora mi funziona, devo provare non appena riesco a montare il tutto

ARDUINO RICEVENTE

float red;
int green;
int blue;

void setup() {
  Serial.begin(9600);
}

void loop() {
  // if there's any serial available, read it:
  while (Serial.available() > 0) {
    if (Serial.find("a") == true) {
      red = Serial.parseFloat();
      green = Serial.parseInt();
      blue = Serial.parseInt();
    }
    // look for the newline. That's the end of your sentence:
    if (Serial.read() == '\n') {
      Serial.print(red);
      Serial.print(",");
      Serial.print(green);
      Serial.print(",");
      Serial.println(blue);
    }
  }
}

ARDUINO che invia

float a = 22.23;
int b = 24;
int c = 25;

void setup() 
{
 Serial.begin(9600); // connessione con il monitor seriale
 
}

void loop() 
{
 Serial.print("a");
 Serial.print(a);
 Serial.print(",");
 Serial.print(b);
 Serial.print(",");
 Serial.print(c);
 Serial.print('\n');
}

ale87:
Penso di aver risolto così (per ora mi funziona, devo provare non appena riesco a montare il tutto

Anche se non ho mai usato OpenLog, ho l'impressione che ci sia comunque qualcosa che non va, o comunque che non mi convince. Provo a elencare.

Primo,, non capisco perché se i parametri sono valori RGB solo il primo debba essere "float".

Secondo, con questo codice dell'Arduino che invia:

void loop() 
{
 Serial.print("a");
 Serial.print(a);
 Serial.print(",");
 Serial.print(b);
 Serial.print(",");
 Serial.print(c);
 Serial.print('\n');
}

Tu "spari" sulla seriale continuamente sempre gli STESSI valori, senza alcuna pausa! Se proprio vuoi farlo, o ci metti un delay o li mandi una volta all'inizio ossia solo nel setup().

Quarto, tu mandi solamente '\n' come separatore, e dato che il monitor seriale manda invece '\r' '\n' è sempre consigliabile restare nello standard:

void loop() 
{
 Serial.print("a");
 Serial.print(a);
 Serial.print(",");
 Serial.print(b);
 Serial.print(",");
 Serial.println(c);
 delay(1000);
}

Infine:

   if (Serial.find("a") == true) {

Il Serial.available() non è necessario se usi Serial.find() in quanto se trova la "a" significa che "qualcosa" c'è nel buffer e se trova la "a" restituisce true, ma dipende se a te interessa "fermarti" in attesa dell'input o meno.
Poi " == true" è superfluo comunque, basta fare quindi:

   if (Serial.find("a")) {