私はゲーム「Assetto Corsa」から車の速度でArduino Servoを作動させようとしていました。私は共有メモリを使用してゲームからライブデータを抽出し、シリアルポート経由でArduinoに送信しようとしています。文字列から情報を抽出する
私はまだサーボの車の実際の速度を表現することはできませんでしたが、なぜそれなら不思議です。私はかなり問題がArduinoコードから来ると確信しています、私は車の速度を抽出することができますが、私はそれを正しく使用する方法がわかりません。多分あなたは助けることができますか?
これは、Arduinoのコードの抜粋です:
char inData[8];
char inChar; // Where to store the character read
byte index = 0; // Index into array; where to store the character
int angle = 0;
int newAngle = 0;
int MaxChars = sizeof(inData);
char ch;
while (Serial.available())
{
char ch = Serial.read();
Serial.write(ch);
if (index < MaxChars && isDigit(ch))
{
inData[index++] = ch;
}
else
{
inData[index] = 0;
newAngle = atoi(inData);
Serial.write(newAngle);
if (newAngle > 0 && newAngle < 180)
{
if (newAngle < angle)
for (; angle > newAngle; angle -= 1)
{
myServo.write(angle);
}
else
for (; angle < newAngle; angle += 1)
{
myServo.write(angle);
}
}
index = 0;
angle = newAngle;
delay(1000);
}
}
そして、これは私がゲームから情報を抽出し、アルドゥイーノに送信するために使用していたコードです:
while (true)
{
snprintf(Data, sizeof(Data)-1, "%3.3f", pf->speedKmh);
SP->WriteData(Data, sizeof(Data));
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
int readResult = SP->ReadData(inData, sizeof(inData));
printf("\t Bytes read: %i\n",readResult);
for (int i = 0; i < sizeof(inData); i++)
{
printf("%i", inData[i]);
inData[i] = 0;
}
}
からのエコーのスクリーンショットです。
Serial.write(NewAngle);
私は車の速度を黄色で概説しました。私の質問は:Arduino Servoで使用するために受け取ったデータからこの速度をどのように抽出するのですか?
ありがとうございました!
---------- ---------- UPDATE
それは働きます!どうもありがとう、これは私が変更したものです:
snprintf(Data, sizeof(Data)-1, "%3.3f", (int)(pf->speedKmh)*1.0);
スピードをintにキャストし、1.0倍しました。それはトリックをしたようだ! 「それがなぜ機能しないのかわからない、何かを変える、それがなぜ機能するのかわからない」という別のケースです。
'inData'の内容は何ですか? newAngleのタイプと価値は何ですか?期待される出力は何ですか(実際の出力をイメージとしてテキストとしてコピーして貼り付けてください)。 –
@JoachimPileborg 'inData'は何を受け取るのですか ' WriteData' 送信します。これに使用されるライブラリは、[ここ](http://playground.arduino.cc/Interfacing/CPPWindows)にあります。 Arduinoコードの変数宣言を含めるために投稿を編集しました。 テキスト出力を取得する方法が不明なので、スクリーンショットを撮ったのです:/ – Frazic
データを抽出するために使用した共有メモリライブラリ[ここ](http://www.assettocorsa.net/forum) /index.php?threads/shared-memory-reference-31-03-2016.3352/) – Frazic