Recepcion de datos via Bluetooth

Hola, busco algo de ayuda en mi codigo, el problema es muy simple pero no he podido encontrar un post que me lo aclare al 100, tengo un proyecto en el que tengo que enviar 4 variables, 3 de ellas son datos de 3 potenciometros y una es un boton, quiero enviar estos datos de un arduino a otro via bluetooth por 2 modulos hc-05, el código de envió de datos es este

int eje_xPin = A0;
int eje_yPin = A1;
int eje_zPin = A2;
int recPin = 8;

  // Definir e inicializar variables donde guardar lecturas sensores
  //Recordatorio codigo: un Array o matriz empieza a contas sus casillas desde 0 no desde 1.
int valor_sensor [ ] = {0, 0, 0, 0};  

void setup()
{
  //Definir el pin del sensor digital como entrada.
pinMode(recPin, INPUT);


  //Inicializar el puerto serie para su utilizacion a 9600 bps
Serial.begin(115200);
}

void loop()
{
  //Leer los datos de las entradas analogicas y digital, y guardarlo como valores integer en el array.
valor_sensor[0] = analogRead(eje_xPin);
valor_sensor[1] = analogRead(eje_yPin);
valor_sensor[2] = analogRead(eje_zPin);
valor_sensor[3] = digitalRead(recPin); 


valor_sensor[0]= map(valor_sensor[0], 0, 1023, 0, 255);
valor_sensor[1]= map(valor_sensor[1], 0, 1023, 0, 255);
valor_sensor[2]= map(valor_sensor[2], 0, 1023, 0, 255);

   Serial.print("valor[0]: "); Serial.print(valor_sensor[0]); Serial.print("\t");
   Serial.print("valor[1]: "); Serial.print(valor_sensor[1]); Serial.print("\t");
   Serial.print("valor[2]: "); Serial.print(valor_sensor[2]); Serial.print("\t");
   Serial.print("valor[3]: "); Serial.print(valor_sensor[3]); Serial.print("\n");


}

el problema es que no se como debería de recibir estos datos con el otro arduino para trabajar después con estas variables, gracias

Te lo simplifico de este modo.
Haz de cuenta que un arduino envía datos, y son recibidos x el segundo.
Donde los vas a recibir? Pues en el puerto serie y resulta que tambien debes usar el puerto serie para monitorear las cosas. Entonces?
Pues usas algo que se llama un puerto virtual, con la librería SoftwareSerial, provista por el IDE.
Solo debes elegir dos pines Rx y Tx para tu nuevo puerto virtual que usarás con el BT y de este modo te permitirá comunicarte.
Este código permite enviar códigos al BT y recibir su respuesta. Ensáyalo y es un primer paso para lograr lo que quieres.
Este código no resuelve tu problema, solo te ayudará a entender lo que debes hacer.

#include <SoftwareSerial.h>
SoftwareSerial BT1(4,2); // RX, TX recorder que se cruzan

void setup()   {
     Serial.begin(9600);
     Serial.println("Enter AT commands:");
     BT1.begin(9600);
}

void loop()   {
     if (BT1.available())
         Serial.write(BT1.read());
       
     if (Serial.available())  {  
         String S = GetLine();
         BT1.print(S);
         Serial.println("---> " + S);
     }
}

String GetLine()  {   
   String S = "" ;
   if (Serial.available())   {    
       char c = Serial.read(); ;
       while ( c != '\n') {           //Hasta que el caracter sea intro
              S = S + c ;
              delay(25) ;
              c = Serial.read();
       }
       return( S + '\n') ;
    }
}

surbyte:
Te lo simplifico de este modo.
Haz de cuenta que un arduino envía datos, y son recibidos x el segundo.
Donde los vas a recibir? Pues en el puerto serie y resulta que tambien debes usar el puerto serie para monitorear las cosas. Entonces?
Pues usas algo que se llama un puerto virtual, con la librería SoftwareSerial, provista por el IDE.
Solo debes elegir dos pines Rx y Tx para tu nuevo puerto virtual que usarás con el BT y de este modo te permitirá comunicarte.
Este código permite enviar códigos al BT y recibir su respuesta. Ensáyalo y es un primer paso para lograr lo que quieres.
Este código no resuelve tu problema, solo te ayudará a entender lo que debes hacer.

#include <SoftwareSerial.h>

SoftwareSerial BT1(4,2); // RX, TX recorder que se cruzan

void setup()  {
    Serial.begin(9600);
    Serial.println("Enter AT commands:");
    BT1.begin(9600);
}

void loop()  {
    if (BT1.available())
        Serial.write(BT1.read());
     
    if (Serial.available())  { 
        String S = GetLine();
        BT1.print(S);
        Serial.println("---> " + S);
    }
}

String GetLine()  { 
  String S = "" ;
  if (Serial.available())  {   
      char c = Serial.read(); ;
      while ( c != '\n') {          //Hasta que el caracter sea intro
              S = S + c ;
              delay(25) ;
              c = Serial.read();
      }
      return( S + '\n') ;
    }
}

gracias por contestar Surbyte, entiendo tu código y puedo enviar variables a través de la comunicación serial, lo que no puedo es reconstruir 2 o mas variables en el arduino receptor, tengo entendido que hay que poner un inicio y fin de trama pero no estoy seguro como debería quedar la sintaxis :confused:

O más sencillo: puedes crear otro array int valor_sensor[4] en el receptor, entonces el emisor puede enviar los valores de la siguiente manera:

Serial.write((byte*)valor_sensor, sizeof(valor_sensor));

Y el receptor de esta:

Serial.readBytes((byte*)valor_sensor, sizeof(valor_sensor));

Nótese que se está usando la clase Serial; si quién envía lo debe hacer mediante un "puerto virtual", entonces en vez de "Serial", se debe usar el nombre del puerto SoftwareSerial.