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