私はPythonを使ってarduinoからポテンショメータの値を読み取ろうとしています。しかし、私のシリアル読み取り値は奇妙です。Pythonはarduinoシリアル出力から正しい値を読んでいません
Pythonのコード:
import serial
ser = serial.Serial('COM12')
print ("connected to: " + ser.portstr)
count = 1
while True:
for line in ser.read():
print(str(count) + str(': ') + str(line))
count = count + 1
ser.close()
Arduinoのコード:
int potpin = 0; // analog pin used to connect the potentiometer
int val = 0; // variable to store the value coming from the sensor
int oldVal = 0; // used for updating the serial print
void setup()
{
Serial.begin(9600);
}
void loop()
{
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 179);
if(val != oldVal)
{
Serial.print(val); // print the value from the potentiometer
oldVal = val;
}
delay(100);
}
いくつかのPythonの出力:この出力はポテンショメータにまっすぐ、ゆっくりと増加から来た は、私は、任意の時点でそれを断ったことはありません。
1: 56
2: 57
3: 49
4: 48
5: 49
6: 49
7: 49
8: 50
9: 49
10: 51
arduinoシリアル端末を実行すると、0〜179の範囲の値が得られます。 Pythonがシリアルポートから正しい値を取得しないのはなぜですか?
おかげ
EDIT:
は、問題を解決しました。 48〜55は1〜9のascii値なので、値ではなく文字を出力するためにPythonコードを変更する必要があります。しかし、これは個々の数字を印刷するという別の問題を引き起こします。例えば、数字「10」は単一の「1」および「0」として来る。これは、arduinoスケッチでSerial.printの代わりにSerial.writeを使うだけで簡単に解決できます。これはまた、numberからascii値ではなく、あなたの数値であるバイトを受け取ることを意味するので、read in lineを値からasciiに変換する必要はありません。
これが役に立ちます。
+1あなたのソースコードを投稿し、見つけた解決策を投稿してください。 – jwygralak67
答えを使って質問を編集するのではなく、解答として回答を投稿してから自分の答えを受け入れることができます。これは解決策があることを人々が知ることを明らかにする。 – Craig