【发布时间】:2015-09-16 09:51:30
【问题描述】:
我已经通过 USB 串行通信连接了 Arduino 和 Raspberry Pi。在 Raspeberry 端,Python 代码必须使用以下附加代码读取三个超声波传感器。因此,根据传感器信息,Python 将通过字符串发送命令,例如M, 2000, 1500 驱动机器人的两个轮子。问题是每次我运行 python 代码时,它都会丢失一些数字或逗号,例如,如果 Arduino 发送 200、122、60(左、中、右)距离,在 python 端,我会收到一些相同的数据,但大部分时间在那里是缺少的数字甚至是逗号,因此拆分功能会显示错误,因为如果我在读取时丢失了逗号而不是三个传感器,那么它将就像两个传感器一样。
import serial
import time
import string
DEVICE = '/dev/ttyACM0'
BAUD = 9600
ser= serial.Serial(DEVICE, BAUD)
while (1==1):
Sensors_Data=ser.readline()
print Sensors_Data
(left_distance, centre_distance, right_distance)=[int(s) for s in Sensors_Data.split(',')]
print left_distance
print centre_distance
print right_distance
if (centre_distance<50):
ser.write('M%4d' %1500)
ser.write('M%4d' %1500)
else:
ser.write('M%4d' %1600)
ser.write('M%4d' %1500)
【问题讨论】:
-
你能在这里打印输出 Sensors_Data 吗?
-
另外,您的拆分功能出错是什么意思?结果不正确?
-
1- Sensors_Data 的输出为 0, 93,0 ; 0,96,0 等等。
-
1- Sensors_Data 的输出为 0, 93,0 ; 0,96,0 等等。如果 Sensors_Data 始终如此,则没有问题。但只是意外地 Sensor_Data 打印了 093,0 或 0,9,0,因此拆分功能不起作用,因为它应该始终接收 x,y,x。此外,如果您查看代码的末尾,如果 center_distance 小于 50,我会发送一个字符串,即 M,1500,1500 到 arduino 以停止电机。但是,有时我也看到 Sensors_Data 的输出与字符串的值混合在一起,例如 0, 93,0M 0r 0,96,01500,这显然是错误的。
标签: python arduino-uno raspberry-pi2