Fehler im Sketch aber wo???

 if     (Serial2.available()==1)

Wenn nur ein Byte zur Verfügung steht, kannst du keine 3 Byte lesen.
Zumindest nicht, ohne den Rückgabe Wert zu prüfen.

while (Serial2.available() ==3);

Diese Endlosschleife ist doch nicht beabsichtigt, oder?

Bei deinem Serial Kram fehlt mir die Synchonisation.
Ein Protokoll.

Grundsätzlich:
Ich halte es für falsch, Variablen durchzunummerieren.
Verwende besser Arrays.
Verzichte auf die endlosen, schwer zu wartenden, Codeduplizierungen.


Zu deinem eigentlichen Problem kann ich wenig sagen, da ich noch nicht verstanden habe, was der ganze Klumpen überhaupt tun soll....