Hi,
ich habe noch nicht sonderlich viel mit meinem Arduino Uno gemacht - das scheint mein Hauptproblem zu sein.
Ich beiße mir aktuell an einer Sache die Zähne aus:
Ich würde gerne über die serielle Verbindung (COM-Port / USB Kabel) dem Arduino einen "Hex"-String schicken (z.B. ff000000) je zwei Hex-Werte soll er zu einem Integer (oder Long) zusammenführen:
- Zeichen 1 und 2 = Wert von 0 bis 255
- Zeichen 3 und 4 = Wert von 0 bis 255
- Zeichen 5 und 6 = Wert von 0 bis 255
- Zeichen 7 und 8 = Wert von 0 bis 255
Da irgendwie immer nur komisches Zeugs raus kam, habe ich ein paar Serial.print() Ausgaben zusammengeschrieben um herauszufinden, wo das Problem liegt.
Der folgende Code:
void setup() {
Serial.begin(9600);
}
void loop() {
char fwd[2] = "";
char bwd[2] = "";;
char lft[2] = "";;
char rgt[2] = "";;
char command[8] = "";
if (Serial.available() > 7)
{
for (int i; i < 8; i++)
{
command[i] = (char)Serial.read();
}
fwd[0] = command[0];
fwd[1] = command[1];
bwd[0] = command[2];
bwd[1] = command[3];
lft[0] = command[4];
lft[1] = command[5];
rgt[0] = command[6];
rgt[1] = command[7];
Serial.print("FWD:");
Serial.print(fwd);
Serial.print("#");
Serial.println(strtol(fwd, NULL, 16));
Serial.print("BWD:");
Serial.print(bwd);
Serial.print("#");
Serial.println(strtol(bwd, NULL, 16));
Serial.print("LFT:");
Serial.print(lft);
Serial.print("#");
Serial.println(strtol(lft, NULL, 16));
Serial.print("RGT:");
Serial.print(rgt);
Serial.print("#");
Serial.println(strtol(rgt, NULL, 16));
}
}
Erzeugt folgende Ausgabe (wenn ich ff000000) sende:
FWD:ff p#255
BWD:00ff p#255
LFT:0000ff p#255
RGT:000000ff p#255
Woher kommen denn die zusätzlichen Zeiten in bwd, lft, rgt ?
Vielen Dank für jede Hilfe im Voraus!