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 がシリアルポートから正しい値を取得しないのはなぜですか?
ありがとう
編集:
問題を解決しました。48-55 は 1-9 の ASCII 値であるため、値ではなく文字を出力するように Python コードを変更する必要があります。ただし、これは個々の数字を出力するという別の問題を引き起こします。たとえば、数字「10」は単一の「1」と「0」として入ります。これは、arduino スケッチで Serial.print の代わりに Serial.write を使用することで簡単に解決されます。これは、数値の ascii 値ではなく、数値であるバイトを受け取ることも意味するため、インラインで読み取ったものを値から ascii に変換する必要はありません。
お役に立てれば。