Я пытаюсь прочитать значения потенциометра от arduino, используя python. Но мои порядковые значения чтения странны.
Код 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 - значения ascii для 1-9, поэтому вопрос изменения кода на питоне для печати символа не является значением. Однако это вызывает еще одну проблему: печатает отдельные цифры. например, число "10" входит в число "1" и "0". Это просто решается с помощью Serial.write вместо Serial.print в эскизе arduino. Это также означает, что вы будете получать байт, который является вашим номером, а не значением ascii для номера, поэтому вам не нужно преобразовывать считанные строки из значения в ascii.
Надеюсь, что это поможет.