es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

Tags:  , , ,

Answer

  1. Avatar for 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.

Comments are closed.