私は、arduino を使用した最初の物理コンピューティング プロジェクトに取り組んでいます。実際には、seeduino stalker 2.1 です。時間の経過に伴う水の収集率を記録するデバイスを構築しています。
プロジェクトをセットアップして実行することは、今日までそれほど難しくありませんでした。メイン ループ内で、ログを処理する a メソッドを呼び出します。また、データを要約して SMS 経由で受信者番号に送信するために必要なタイマーの繰り返しを処理するためのアラーム遅延も追加しました。
問題は、alarm.repeat() がアクティブな場合、データのログ記録を先取りすることです。問題は、alarm.delay があるときにループ内のロギング メソッドが機能しないのはなぜですか?
void setup() {
Serial.begin(9600);
Wire.begin();
setTime(1,17,0,1,1,13); // set time
Alarm.timerRepeat(60, Repeats); //set repeater
}
void loop(){
logging(); //call logging
Alarm.delay(1300); //for repeater
}
void Repeats(){
Serial.println("the repeater fired"); // just to see it working
}
void logging(){
val = digitalRead(Sensor_Pin); // read Sensor_Pin
if (val == HIGH) {
// If Sensor N.C. (no with magnet) -> HIGH : Switch is open / LOW : Switch is closed
// If Sensor N.0. (nc with magnet) -> HIGH : Switch is closed / LOW : Switch is open
digitalWrite(Led_Pin, LOW); //Set Led low
//Serial.print("status -->");
//Serial.println("low");
//delay(500);
} else {
digitalWrite(Led_Pin, HIGH); //Set Led high
logdata();
}
}
void logdata(){
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File myFile = SD.open("datalog.txt", FILE_WRITE);
// if the file opened okay, write to it:
if (myFile) {
//DateTime now = RTC.now();
//String myString = readTimestamp(now);
time_t t = now();
String aDate = String(year(t))+"/"+String(month(t))+"/"+String(day(t))+" "+String(hour(t))+":"+String(minute(t))+":"+String(second(t));
myFile.println(aDate);
// close the file:
myFile.close();
Serial.println(aDate);
delay(500); } else {
// if the file didn't open, print an error:
// Serial.println("error opening DATALOG.TXT");
}
}