我正在尝试从与 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