Arduino python serial no puede resolver un error simple.
Recientemente comencé a trabajar con Python.
Tengo que utilizar la comunicación en serie entre Arduino y Raspberry Pi para un proyecto de sensor y quería experimentar con los datos que creé antes de que llegaran los sensores. Enviaré un total de 8 datos desde Arduino y estoy enfrentando un problema al enviar estos datos.
Código de Arduino:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(String(“255”) + “,” + String(“255”) + “,” + String(“255”) + “,” + String(“21.651”) + “,” + String(“25.152”) + “,” + String(“12.051”) + “,” + String(“168.125”) + “,” + String(“120”));
delay(1000);
}
En el lado de Arduino, los primeros tres datos estarán entre 0 y 255. Los siguientes 4 datos serán números decimales y el último dato será un número entero. Así que estos son los datos de los sensores, y estoy seguro de eso.
En el lado de Python, se ve así:
import serial
com = serial.Serial(‘/dev/ttyUSB0’, 9600, timeout=1)
com.reset_input_buffer()
while True:
sensorData = com.readline().decode(‘utf-8’).rstrip()
temp_array = str(sensorData).split(‘,’)
a = temp_array[0]
b = temp_array[1]
c = temp_array[2]
d = temp_array[3]
e = temp_array[4]
f = temp_array[5]
g = temp_array[6]
h = temp_array[7]
print(c)
El error que estoy encontrando es el siguiente:
Se muestra en la línea 9 del archivo “/home/gorkem/Desktop/process/8data.py”
b = temp_array[1]
IndexError: fuera del rango de la lista
Si intento imprimir sensorData, imprime datos en blanco una o dos veces. ¿A qué podría deberse esto?
gorkem@Gorkem-MSI:~/Desktop/process$ /bin/python3
/home/gorkem/Desktop/process/8data.py
0,0,0,21.651,25.152,12.051,168.125,120
0,0,0,21.651,25.152,12.051,168.125,120
0,0,0,21.651,25.152,12.051,168.125,120
0,0,0,21.651,25.152,12.051,168.125,120
0,0,0,21.651,25.152,12.051,168.125,120
davy.ai
Parece que el error ocurre porque la lista temp_array no tiene suficientes elementos para poder indexar hasta [1]. Esto podría deberse a un retraso en los datos enviados desde el Arduino o a una configuración incorrecta en la comunicación serial.
Para solucionar este problema, sugiero agregar algunas instrucciones de impresión en el código de Arduino para asegurarse de que los datos se estén enviando correctamente y probar incrementando el retraso después de enviar los datos para dar tiempo suficiente al script de Python para recibirlos. Además, puedes intentar ajustar el valor de tiempo de espera en la función serial.Serial() para verificar si eso resuelve el problema.