Передача по RS-485

Здравствуте. задача включать светодиоды на принимающей плате( Платы соединены с помощю RS 485). У меня получается толко один диод включать .Этот Код для двух принимающих. у меня один принимающии. Как прописать кнопки чтобы разные команды давали, например 1 кнопка для 1 светодиода команда ,для 2 ого вторая.
Вот передающий скетч:

byte BUT[2] = {9, 8};     // пины кнопок
byte LED[2] = {13, 12};   // пины светодиодов

#define IN_OUT 6          // переключатель прием-отправка

byte MSG_IN[4];
byte MSG_OUT[4] = {0x10, 0, 0, 0x20}; // шаблон сообщения: 0 - начальный, 1 - адрес сателлита, 2 - команда, 3 - конечный

void setup() {
  for (byte i = 0; i < 2; i++) {
    pinMode(BUT[i], INPUT_PULLUP);
    pinMode(LED[i], OUTPUT);
  }
  pinMode(IN_OUT, OUTPUT);
  digitalWrite(IN_OUT, LOW);
  Serial.begin(9600);
}

void loop() {
  post();                       // периодическая отправка команд на ведомые
  if (Serial.available()) {     // прием команд от ведомых
    //    delay(1);
    for (byte i = 0; i < 3; i++) MSG_IN[i] = MSG_IN[i + 1];
    MSG_IN[3] = Serial.read();
    if (MSG_IN[0] == 0x10 && MSG_IN[3] == 0x20) { // пришло полное сообщение
      digitalWrite(LED[MSG_IN[1]], !MSG_IN[2]);   // выполняем, передаем на светодиод соответствующий адресу состояние пришедшее в команде
    }
  }
}


void post() {
  static unsigned long timerT;
  static byte msg_num = 0;
  if (timerT > millis() - 100) return;      // отправляем последовательно каждые 100 мс
  MSG_OUT[1] = msg_num;
  MSG_OUT[2] = digitalRead(BUT[msg_num]);
  msg_num = !msg_num;
  digitalWrite(IN_OUT, HIGH);               // включаем отправку
  for (byte i = 0; i < 4; i++) {            // отправляем 4 байта сообщения
    Serial.write(MSG_OUT[i]);
  }
  delay(5);                                 // ожидаем пока уйдет команда до того, как переключить отправку на прием
  digitalWrite(IN_OUT, LOW);                // переключаемся на прием
  timerT = millis();
}

Принимающий :

byte BUT = 2;     // пин кнопки
byte LED = 12;    // пин светодиода

#define IN_OUT 6  // переключатель прием-отправка

#define ADR 0     // адрес ведомого (для первого ведомого 0, для второго 1)!

byte MSG_IN[4];
byte MSG_OUT[4] = {0x10, ADR, 0, 0x20};  // шаблон сообщения: 0 - начальный, 1 - адрес сателлита, 2 - команда, 3 - конечный

void setup() {
  pinMode(BUT, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
  pinMode(IN_OUT, OUTPUT);
  digitalWrite(IN_OUT, LOW);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()) {
    //    delay(1);
    for (byte i = 0; i < 3; i++) MSG_IN[i] = MSG_IN[i + 1];
    MSG_IN[3] = Serial.read();
    if (MSG_IN[0] == 0x10 && MSG_IN[1] == ADR && MSG_IN[3] == 0x20) { // пришло полное сообщение именно нам!
      digitalWrite(LED, !MSG_IN[2]);   // выполняем, устанавливаем в светодиод состояние пришедшее почтой
      MSG_OUT[2] = digitalRead(BUT);
      delay(5);                        // ждем пока главный переключится на прием
      digitalWrite(IN_OUT, HIGH);      // включаем передачу
      for (byte i = 0; i < 4; i++) {   // передаем
        Serial.write(MSG_OUT[i]);
      }
      delay(5);                        // ждем пока уйдет сообщение
      digitalWrite(IN_OUT, LOW);       // переключаем на прием
    }
  }
}

Очевидно, при нажатии на одну кнопку надо передавать одну команду, а при нажатии на другую - другую.
А на принимающей стороне анализировать принятую команду и зажигать нужный светодиод.

MSG_OUT[2] = digitalRead(BUT[msg_num]);
[/quote]

Вот прописывается значение команды ? правильно?

Правильно или нет - никто кроме Вас знать не может. Потому, что только Вы знаете, что такое “правильно”.
Мы со своей стороны не знаем, что именно Вам нужно, и можем судить только о том, совпадает ли текстовое описание задачи с тем, что написано в коде или нет.
Пока можно сказать, что не совпадает: оба скетча осуществляют как передачу, так и прием, что противоречит текстовому описанию.