Próbuję odczytać wartości potencjometru z arduino za pomocą pythona. Ale moje wartości odczytu szeregowego są dziwne.Python nie odczytuje poprawnych wartości z wyjścia szeregowego arduino
kod 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()
kod 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);
}
Niektóre Python wyjściowa: Wyjście pochodził z prostej, powolny wzrost na potencjometr, nigdy nie odwrócił ją w dowolnym punkcie .
1: 56
2: 57
3: 49
4: 48
5: 49
6: 49
7: 49
8: 50
9: 49
10: 51
Po uruchomieniu terminala szeregowego arduino otrzymuję wartości z zakresu od 0 do 179. Dlaczego Python nie otrzymuje prawidłowych wartości z portu szeregowego?
Dzięki
EDIT:
rozwiązało problem. 48-55 to wartości ascii dla 1-9, więc jest to kwestia zmiany kodu Pythona, aby wydrukować znak, a nie wartość. Powoduje to jednak inny problem polegający na tym, że drukuje poszczególne cyfry. na przykład liczba "10" pojawia się jako pojedynczy "1" i "0". Jest to po prostu rozwiązane przez użycie Serial.write zamiast Serial.print w szkicu arduino. Oznacza to również, że otrzymasz bajt, który jest twoim numerem, a nie wartość ascii numeru, więc nie musisz konwertować odczytu w linii z wartości na ascii.
Mam nadzieję, że to pomoże.
+1 za opublikowanie kodu źródłowego i opublikowanie znalezionego rozwiązania. – jwygralak67
Zamiast edytować pytanie za pomocą odpowiedzi, możesz opublikować rozwiązanie jako odpowiedź, a następnie zaakceptować własną odpowiedź. Ułatwia to ludziom znalezienie odpowiedzi na pytanie, czy istnieje rozwiązanie. – Craig