HILFE!!! Arduino Uno + Xbee Problem mit Serial.Write

Hi,

Ich bin momentan an einem Projekt mit 2 Arudino Uno und 2 XBee Shields (Series 2)
Von dem einen Arduino soll über einen Schiebe-Poti ein Wert an den anderen Übertragen werden und dann 2 Servomototren bewegt werden

Das ist ein Codestück zum senden der Poti-Werte (Baudrate 9600)

potValue = analogRead(A5);
Serial.write("<1:");
Serial.write(potValue);
Serial.write(">");
  
Serial.write("<2:");
Serial.write(potValue);
Serial.write(">");
Serial.println(potValue);

Wenn ich mir das im Seriel-Monitor anzeigen lasse, schaut es so aus…

<1:Ð><2:Ð>208
<1:><2:>270
<1:g><2:g>359

Wenn ich den Wert des Poti einfach ausgebe ist es wunderbar, sobald ich es aber Seriell übertragen möchte steht nur mist dran -_-

Das Empfange ich beim Empfänger (sind nicht die selben Werte wie oben - dient als Beispiel)

1:Ý
2:Ý477
1:Ü
2:Ü476
1:Ý
2:Ý477
1:Þ
2:Þ478
1:ß
2:ß479
1:³
2:³179

Wie kann ich dieses Problem lösen?

Danke!
cualalumpur

hier noch mein Code
Transmit

#define MAX_MILLIS_TO_WAIT 2000

unsigned long bias;
unsigned long stopwatch;
int led_green = 13;
int led_yellow = 11;
int led_red = 12;
int potValue = 0;
int potValue_safe = 0;


void setup()
{
  pinMode(led_green, OUTPUT);
  pinMode(led_yellow, OUTPUT);
  pinMode(led_red, OUTPUT);
  potValue = analogRead(A5);
  potValue_safe = potValue;
  Serial.begin(9600);
}

void loop()
{
  stopwatch = newMillis();
  delay(300);
  potValue = analogRead(A5);
  if(potValue == potValue_safe || potValue <= 20)
  {
    if(stopwatch >= MAX_MILLIS_TO_WAIT)
    {
      Serial.write('L');
      digitalWrite(led_green, HIGH);
      delay(100);
      digitalWrite(led_green, LOW);
    }
  }
  else
  {
    resetMillis();
    digitalWrite(led_yellow, HIGH);
    delay(100);
    potValue_safe = potValue;
    //Serial.write(potValue/256);
    //Serial.write(potValue%256);
    //byte get1 = potValue/256;
    //byte get2 = potValue%256;
    //int value = (int((int)get1) * 256 + get2);
    Serial.write("<1:");
    Serial.write(potValue);
    Serial.write(">");
    
    Serial.write("<2:");
    Serial.write(potValue);
    Serial.write(">");
    
    Serial.println(potValue);
    digitalWrite(led_yellow, LOW);
  } 
}

int newMillis() 
{
  return (millis() - bias);
}

void resetMillis() 
{
  bias = millis();
}

Receive:

#include <LiquidCrystal.h>
#include <Servo.h>
#define MAX_MILLIS_TO_WAIT 2500
#define SOP '<'
#define EOP '>'

bool started = false;
bool ended = false;
bool convert = false;
int convCount = 0;
char inData[80];
char convData[10];
byte index;

unsigned long stopwatch;
unsigned long bias;
int ledPin_fail = 13;
int ledPin_ok = 12;
int ledPin_wait = 11;
int servoValue = 0;

Servo servo1, servo2;

void setup()
{
  servo1.attach(10);
  servo2.attach(9);
  pinMode(ledPin_fail, OUTPUT);
  pinMode(ledPin_ok, OUTPUT);
  pinMode(ledPin_wait, OUTPUT);
  resetMillis();
  Serial.begin(9600);
}

void loop()
{
  stopwatch = newMillis();
  if(stopwatch >= MAX_MILLIS_TO_WAIT)
  {
    digitalWrite(ledPin_wait, LOW);
    digitalWrite(ledPin_fail, HIGH);
    digitalWrite(ledPin_ok, LOW);
  }
  while(Serial.available() > 0)
  {
    char inChar = Serial.read();
    if(inChar == SOP)
    {
       digitalWrite(ledPin_wait, LOW);
       digitalWrite(ledPin_fail, LOW);
       digitalWrite(ledPin_ok, HIGH);
       index = 0;
       inData[index] = '\0';
       started = true;
       ended = false;
       resetMillis();
    }
    else if(inChar == EOP)
    {
       for(int i = 0; i <10; i++)
       {
         if(inData[i] == '\0')
          break;
         else
         {
           if(convert)
           {
             convData[convCount] = inData[i];
             convCount++;
           }
           if(inData[i] == ':')
           {
             convert = true;
             convCount = 0;
           }
         }
       }
       int n = atoi(convData);
       servo1.write(n);
       servo2.write(n);
       //Serial.println(n);
       ended = true;
       resetMillis();
       break;
    }
    else if(inChar == 'L')
    {
      Serial.println("L");
      resetMillis();
      digitalWrite(ledPin_wait, HIGH);
      digitalWrite(ledPin_fail, LOW);
      digitalWrite(ledPin_ok, LOW);
    }
    else
    {
      if(index < 79)
      {
        Serial.print(inChar);
        inData[index] = inChar;
        index++;
        inData[index] = '\0';
      }
      resetMillis();
    }
  }

  // We are here either because all pending serial
  // data has been read OR because an end of
  // packet marker arrived. Which is it?
  if(started && ended)
  {
    // The end of packet marker arrived. Process the packet
    // Reset for the next packet
    started = false;
    ended = false;
    index = 0;
    inData[index] = '\0';
    convert = false;
  }
}

int newMillis() 
{
  return (millis() - bias);
}

void resetMillis() 
{
  bias = millis();
}

Versuch's mal mit Serial.print() anstatt Serial.write(). Bei Zeichenketten ist das Resultat in den meisten Fällen gleich, bei Ganzzahl-Werten nicht (der Wert wird in ein Byte umgewandelt und so als "Zeichen" gesendet).