带有多个变量的arduino python接口

时间:2015-10-28 00:09:47

标签: python interface arduino

我想带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")

如何让所有时间更新多个变量?现在我只是得到第一个,它没有更新

1 个答案:

答案 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;示例