Comunicación entre dos arduinos vía Puerto Serie

Buenos días queridos lectores,

me encuentro desarrollando un proyecto de comunicación Serial entre dos Arduinos, en el que el primer paso es comunicar desde un arduino a otro el valor de lectura analógica de un potenciómetro. Para ello he desarrollado el skecht emisor y receptor tal como siguen:

//EMISOR

uint8_t i;

byte array[2]; //Array byte de 2 Bytes


void setup()
{
  Serial.begin(9600);     
  Serial.println("Monitor Conectado");   

}

void loop()
{
  int analogValue = analogRead(1); //Leo el Valor analógico
  int h = map(analogValue, 0, 1023, 0, 255); //Escalo el valor para tener un entero 8 bits máx
  
  i=0;
  array[0] = 100; //Asigno un valor fijo
  array[1] = h;

    for(i=0;i<2;i++)
    {
      Serial.write(array[i]);
    }
    delay(1000);
 
}
[/color]

//RECEPTOR

[color=red]byte i; 
void setup()
{

   Serial.begin(9600); 
   
}

void loop()
{

  if(Serial.available()>0)
   {
   
    i = Serial.read(); //Leo el byte que entra por el puerto Serial
    Serial.println(i); //Imprimo el valor del Byte
   }
    
   
   delay(1000);

}

Bien, ocurre lo siguiente. Abro el monitor y recibo correctamente el valor fijo, 100, y un valor que lee en el potenciómetro. Sin embargo, si muevo el potenciómetro el valor que va apareciendo el monitor correspondiente a la lectura del potenciómetro no se va actualizando, sigue siendo el primero que salió. Si quito el monitor Serial y lo vuelvo a abrir entonces ya aparece el nuevo valor de lectura del potenciómetro, pero si vuelvo a moverlo este no se va actualizando en la pantalla.

He probado con el programa HTerm y tampoco recibe los datos como debería, sin embargo he podido comprobar que los bytes que envía el arduino emisor son los que quiero que envíe y sí se actualizan al mover el potenciómetro.

¿Alguna sugerencia para poder solucionar el problema?

Muchas gracias de antemano.

Para comenzar, lee las Normas del foro y aprende a usar tags (</>) para insertár códigos.
El emisor tiene este error que ya te corrijo.

Serial.println(array[i]);

de este modo enviará bien los datos.
Pero además acabo de comprobar que has definido a array como byte
O sea que solo te envia 2 bytes
definelo asi

uint8_t i;
int array[2]; //Array byte de 2 Bytes

void setup() {
  Serial.begin(9600);     
  Serial.println("Monitor Conectado");   
}

void loop(){
  int analogValue = analogRead(1); //Leo el Valor analógico
  int h = map(analogValue, 0, 1023, 0, 255); //Escalo el valor para tener un entero 8 bits máx
  
// borre el i=0; porque luego asignas a cada elemento del vector y no hace falta.
  array[0] = 100; //Asigno un valor fijo
  array[1] = h;

    for(i=0;i<2;i++)     {
      Serial.write(array);
    }
    delay(1000);
 
}

NOTA: Asi es como se insertan los códigos

El programa que recibe lo hace en forma independiente de como se defina el emisor asi que va a funcionar

Hola, gracias por la rápida respuesta, y disculpas por no poner el código como se debe.

En el código del emisor había un error ya que al copiarlo aquí se ha borrado una parte y no me he dado cuenta.

He cambiado lo de byte, aunque no entiendo muy bien lo que quieres decir. si es un array byte o un array de enteros, entiendo que cambia en que cada entero son dos bytes, pero en mi caso los números que paso son menores a 255 por lo que con dos bytes entiendo que me sobra.

El emisor cambiando lo de el array

uint8_t i;
int array[2]; //Array byte de 2 Bytes


void setup()
{
  Serial.begin(9600);     
  Serial.println("Monitor Conectado");   

}

void loop()
{
  int analogValue = analogRead(1); //Leo el Valor analógico
  int h = map(analogValue, 0, 1023, 0, 255); //Escalo el valor para tener un entero 8 bits máx
 
  array[0] = 100; //Asigno un valor fijo
  array[1] = h;

    for(i=0;i<2;i++)
    {
      Serial.write(array[i]);//También he probado con Serial.println(array[i]);
    }
    delay(1000);
 
}

Y el receptor tal cual

int i;
void setup()
{

   Serial.begin(9600);
   
}

void loop()
{

  if(Serial.available()>0)
   {
   
    i = Serial.read(); //Leo el byte que entra por el puerto Serial
    Serial.println(i); //Imprimo el valor del Byte
   }
   
   
   delay(1000);

}

He probado pero sigue sin funcionar. Además me hace cosas extrañas, como con idéntico código no me da los mismos valores numéricos. Quizás hay algún pin Rx o Tx dañado.
El tema es que con valores fijos la comunicación es perfecta, pero cuando el valor cambia como en el caso de la entrada analógica, este valor no va cambiando también en el monitor.

Bueno en principio me he equivocado. Y no hacia falta poner int.
Vamos de nuevo

uint8_t i;
byte array[2]; //Array byte de 2 Bytes

void setup() {
  Serial.begin(9600);     
  Serial.println("Monitor Conectado");   
}
void loop(){
  int analogValue = analogRead(1); //Leo el Valor analógico
  byte h = map(analogValue, 0, 1023, 0, 255); //Escalo el valor para tener un entero 8 bits máx
  array[0] = 100; //Asigno un valor fijo
  array[1] = h;
    for(i=0;i<2;i++)    {
      Serial.write(array[i]);
    }
    delay(1000);
}

y para el receptor

byte i; 
void setup() {
   Serial.begin(9600);   
}
void loop() {
  if(Serial.available()>0) {
    i = Serial.read(); //Leo el byte que entra por el puerto Serial
    Serial.println(i); //Imprimo el valor del Byte
 }
}

Y cómo debería de hacer si quisiera transmitir un valor mayor a 255?

Necesito transmitir el valor del potenciometro de 0 a 1023

Alguien sería tan amable de indicarme cómo?