Hallo Zusammen,
ich möchte Arduino Input Werte (float) auf meinem Raspberry Pi einlesen können. Sprich ich möchte die Werte auf meinem Linux-Terminal des Raspberry Pi ausgeben.
Zur Info: Der Arduino ist über einen USB-Kabel mit dem Raspberry Pi verbunden.
Das ist mein Arduino-Programm, mit dem ich Daten von meiner Schaltung auf meinen Serial Monitor übertrage:
int readPin = A2;
int v2 = 0;
int wait = 500;
void setup () {
pinMode(readPin,INPUT);
Serial.beginn (9600);
}
void loop () {
v2 = analogRead(readPin);
Serial.println(v2);
delay(wait);
}
Das ist mein Python-Programm auf dem Raspberry Programm, mit dem ich die Arduino Serial Daten auf Python ausgeben kann:
import serial
arduinoSerialData = serial.Serial('/dev/ttyUSB0',9600)
while (1==1):
if (arduinoSerialData.inWaiting()>0):
myData = float(arduinoSerialData.readline().decode('ascii'))
print (myData)
Du kannst sehen, dass ich die Arduino-Werte in Python zu 'float' umwandele. Das Problem ist, dass ich MANCHMAL ein Error auf meinem Linux-Terminal bekomme. Wenn ich nach dem Error das Programm allerdings nocheinmal ausführe, kann Python die Werte aus meinem Arduino problemlos ausgeben.
Das ist die Fehlermeldung auf meinem Linux-Terminal:
Traceback (most recent call last):
File "xyz.py", line 7, in <module>
myData = float(arduinoSerialData.readLine().decode('ascii'))
Value Error: could not convert string to float: '\x00\n'
Das Problem ist, dass Python MANCHMAL versucht den Wert 'x00' in einen float umzuwandeln, was so nicht gehen kann. Manchmal will er dies gar nicht umwandeln, und ich kann problemlos die Arduino Werte auf dem Linux-Terminal ausgeben.
Ich wäre jeden Rat dankbar, wie man dieses Programm zu HUNDERT PROZENT funktionsfähig machen kann. Wie bringe ich Python dazu diesen einen Wert nicht umzuwandeln??
Lieben Dank.