【发布时间】:2012-09-10 14:40:50
【问题描述】:
我正在尝试从与 Arduino 接口的传感器发布 Twitter 更新。 Adruino 回路在读取传感器电压之间有 1 秒的延迟。 Python 代码在 Twitter 更新之间有 1 小时的延迟。
似乎 Python 脚本实际上中断 Arduino 循环,直到它在串行端口上读取一个新行。它是否正确?
例如,尽管 Arduino 程序循环运行 1 小时,但它只会显示 millis() 计数器值 1001,2 小时后它将显示 2002。没有运行 Python 脚本并仅观察串行监视器,Arduino 代码按预期计算毫秒数。
这通常不是问题,但如果您想同时运行一个数据记录器和millis() 以高采集率连续运行,这将是一个问题。很难知道发生了什么,因为串行监视器不能与 Python 程序共享同一个端口。
这是 Arduino 代码示例
void loop() {
unsigned long ms=millis();
// read the input on analog pin 1:
int sensorValue = analogRead(A1);
float Temp = sensorValue * Vref * (100.0/1023.0);
// print out the value you read:
Serial.print(Temp);
Serial.print(" degC");
Serial.print(" , ");
Serial.print(ms);
Serial.println(" milliseconds");
delay(1000); // delay in miliseconds between reads for stability
}
下面是有问题的 Python 代码部分:
arduino = serial.Serial('COM6', 9600)
while 1: ##Infinite Loop
status = arduino.readline() ##Wait for new line to come across Serial
api.PostUpdate(status) ##Post message to Twitter
time.sleep(3600) ##Wait 3600 seconds
【问题讨论】:
-
没关系。也许这与您如何在操作系统中设置串行端口有关?你在使用 Windows 吗? Linux?操作系统?
-
视窗。因此,我如何将串行端口定义为“COM6”。我认为基于 Linux 的系统应该是“/dev/ttlusb0”