Guten Abend,
ich versuche mittels zwei Xbee´s Analogwerte zu übertragen. Das funktioniert auch sehr gut.
Um die "ASCII" Werte in "int" umzurechnen, habe ich mich folgendem Code bedient.
Serial.print("<");
Serial.print(heading);
Serial.print(">");
char inData[10];
int index;
boolean started = false;
boolean ended = false;
void loop()
{
while(Serial.available() > 0)
{
char aChar = Serial.read();
if(aChar == '>')
{
started = true;
index = 0;
inData[index] = '\0';
}
else if(aChar == '>')
{
ended = true;
}
else if(started)
{
inData[index] = aChar;
index++;
inData[index] = '\0';
}
}
if(started && ended)
{
[i] // Convert the string to an integer
int inInt = atoi(inData);
Serial.print("Analogwert 1:");
Serial.println(inInt);[/i]
// Get ready for the next time
started = false;
ended = false;
index = 0;
inData[index] = '\0';
}
}
Quelle: http://forum.arduino.cc/index.php/topic,39609.0.html#2
Auch das funktioniert sehr gut (ob es bessere Methoden gibt?!).
Nun möchte ich einen zweiten Analogen Wert auf die selbe Weise umrechen, was auch noch klappt. Dieser zweite - korrekte - Wert überschreibt nun aber den ersten.
char inData2[10];
int index2;
boolean started2 = false;
boolean ended2 = false;
....
{
char aChar2 = Serial.read();
if(aChar2 == '>')
{
started2 = true;
index2 = 0;
inData2[index2] = '\0';
}
else if(aChar2 == '>')
{
ended2 = true;
}
else if(started2)
{
inData2[index2] = aChar2;
index2++;
inData2[index2] = '\0';
}
}
if(started2 && ended2)
{
[i] // Convert the string to an integer
int inInt2 = atoi(inData);
Serial.print("Analogwert 2:");
Serial.println(inInt2);[/i]
// Get ready for the next time
started2 = false;
ended2 = false;
index2 = 0;
inData2[index2] = '\0';
}
}
Wo liegt der Fehler, bzw. ist es auf diese Weise überhaupt realisierbar?
Gruß