我想带3个传感器变量,这些变量一直在改变我的python接口。
我正在尝试使用此测试代码,它不起作用,我做错了什么?
Arduino的:
void setup() {
Serial.begin (9600);
}
void loop() {
Serial.print(random(1,3));
Serial.print(random(3,5));
Serial.print(random(5,7));
}
的Python:
canvas.create_text(190, 150, text=ser.readline(1), fill="gray", font="Helvetica 45 bold",tag="T1")
如何让所有时间更新多个变量?现在我只是得到第一个,它没有更新
答案 0 :(得分:1)
为什么使用readline
函数只读取一个字节?由于您需要多个值,请将变量与(例如)空格分开,然后使用readline
将它们全部存储起来,并split
将它们分开:
PS:请注意,最后一个实际上是println
Arduino的:
void loop() {
Serial.print(random(1,3));
Serial.print(" ");
Serial.print(random(3,5));
Serial.print(" ");
Serial.println(random(5,7));
}
的Python:
allitems=ser.readline()
separateditems=allitems.split();
canvas.create_text(190, 150, " - ".join(separateditems), fill="gray", font="Helvetica 45 bold",tag="T1")
在此示例中,我将这些项目放在separateditems
列表中(因此separateditems[0]
等于random(1,3)
,separateditems[1]
等于random(3,5)
和{{ 1}}等于separateditems[2]
)。然后我加入他们以显示"随机(1,3) - 随机(3,5) - 随机(5,7)"。无论如何,你可以用收集的数据做任何你想做的事。
然后我强烈建议你在random(5,7)
内加一个延迟,以避免发送太多数据。我建议最后加loop
,或者如果你需要在等待的时候做其他事情,请立即查看" Bounce;#34;示例