ayuda programa con looop de datos

les explico trato de prender un led desde mi pc mandando el dato 1 o 0 según sea para que lo prenda o apague, este dato deveria cumplir con el siguiente recorrido, de mi pc a un arduino, luego de este arduino a otro arduino y de a ai a prender el led, por que asi, pues tratamos de que desde dos pc distintos se pueda prender el led del arduino del contrario, les dejo el codigo que estamos usando asta ahora.
gracias de antemano si alguien me pega una ayudita, ya que soy un tanto novato en esto y me interesa mucho aprender a usarlo.
el problema es que si envío un 1 el led no prende luego si el otro pc envía envía un 1 prende el led de el pero no el de mi arduino que es lo que queremos lograr, pues si yo envío oro 1 se prende el mio y bueno no sabemos bien por que pasa .
de nuevo graciaaaas por cualquier ayuda posible.

/// programa de prender y apagar led entre pc y arduino del pc vecino

int tx = 2;
int rx = 3;
int led = 4;
void setup()
{
  Serial.begin (9600);
  pinMode(led, OUTPUT);
  pinMode(tx,INPUT);
  pinMode(rx, OUTPUT);
}

void loop()
{
 while(Serial.available() == 0);
 int val = Serial.read()- '0';
 
 if (digitalRead(tx) == HIGH)
 {
     digitalWrite(led,HIGH);
 }else
 {
     digitalWrite(led,LOW);
 }
 if (val == 1)
 {
   Serial.println("Led is on");
   digitalWrite(rx,HIGH);
 }
   else if (val == 0)
 {
   Serial.println("Led is off");
   digitalWrite(rx,LOW);
 }

Moderator edit:
</mark> <mark>[code]</mark> <mark>

</mark> <mark>[/code]</mark> <mark>
tags added.