Python スクリプトから Arduino Uno にシリアル経由でデータを正しく送信できません。私は 9600 ボーを使用しており、Arduino は正しくリセットされますが、Python スクリプトから送信した文字を読み取れません。time.sleep()
Arduino のリセットが干渉しないことを確認するために呼び出します。Windows 7 を使用しています。デスクトップで Python スクリプトを実行し、USB 経由で Arduino Uno のシリアルに接続していることを明確にする必要があります。次に、Uno の RX および TX ピン (ピン 0 および 1) を Mega の Serial1 (ピン 18 および 19) に接続します。次に、ラップトップの Arduino IDE のシリアル モニター (Mega の通常のシリアルを使用) を使用して、Uno が見ているものをのぞき見します。Mega のコードは次のとおりです。
void setup() {
Serial1.begin(9600);
Serial.begin(9600);
Serial.println("Master Ready");
}
void loop() {
if(Serial1.available() > 0) {
char inByte = Serial1.read();
Serial.write(inByte);
Serial.write("\n");
}
}
Uno のコードは次のとおりです。
void setup() {
Serial.begin(9600);
Serial.println("Slave Ready");
}
void loop() {
if(Serial.available() > 0) {
char inByte = Serial.read();
Serial.write(inByte);
}
}
最後に、Python スクリプトを次に示します。
import sys
import serial
import time
ser = serial.Serial("COM23",9600)
n = int(sys.argv[1])
print n
time.sleep(10)
print ser
print n == 41
if (n == 70):
ser.write(chr(97))
print 'a'
elif n == 41:
ser.write('ggggggg')
print 'b'
elif n == 42:
ser.write('hello world')
print 'c'
elif n == 25:
ser.write(chr(100))
elif n == 26:
ser.write(chr(101))
elif n == 22:
ser.write(chr(102))
elif n == 10:
ser.write(chr(103))
elif n == 4:
ser.write(chr(104))
elif n == 14:
ser.write(chr(105))
elif n == 7:
ser.write(chr(106))
elif n == 11:
ser.write(chr(105))
elif n == 5:
ser.write(chr(106))
elif n == 17:
ser.write(chr(107))
# head - a - 70
# right bicep - b - 41
# right forearm - c - 42
# left bicep - d - 25
# left forearm - e - 26
# chest - f - 22
# right thigh - g - 10
# left thigh - h - 4
# right shin - i - 11 - 14
# left shin - j - 5 - 7
# waist - k - 17
それが役立つ場合に備えて、私は基本的に Doom3 のヒット位置をシリアル経由で Arduino に書き込んで、Arduino が体の適切な位置でモーターをオンにできるようにしようとしています。ゲームのコードは C++ で、最初は C++ 用のシリアル ライブラリを使用してみましたが、それもうまくいきませんでした。