ฉันใช้ Arduino เพื่อบันทึกข้อมูลบางอย่าง ในร่าง Arduino ของฉันฉันยังใช้millis()
ฟังก์ชั่นเพื่อให้ฉันสามารถติดตามเวลาที่แต่ละค่าที่ฉันวัดถูกนำมาใช้ อย่างไรก็ตามฉันสังเกตเห็นว่าเวลาไม่ถูกต้อง ตัวอย่างเช่น 30 วินาทีในชีวิตจริงเท่านั้นออกมาเป็น 10 วินาที (ทำขึ้นตัวอย่าง)
ฉันถูกต้องหรือไม่ในการบอกว่าฟังก์ชั่นการหน่วงเวลา Arduino มีผลต่อการใช้เวลาอย่างต่อเนื่องmillis()
หรือไม่? กล่าวอีกนัยหนึ่งสมมติว่าฉันมีความล่าช้า 50 มิลลิวินาทีนั่นหมายความว่าmillis()
ฟังก์ชั่นจะหยุดในช่วงเวลานั้นเช่นกันจากนั้นจึงดำเนินการต่อไปเรื่อย ๆ ตลอดระยะเวลาของการเชื่อมต่อหรือไม่ ฉันสังเกตเห็นสิ่งนี้เมื่อฉันพยายามพล็อตข้อมูลบางส่วนและพบว่าความถี่ของยอดเขาในข้อมูลของฉันบ่อยเกินไปตามเวลาที่ผ่านไป ดังนั้นฉันต้องการทราบว่านั่นเป็นเหตุผลสำหรับการไม่ตรงตามกำหนดเวลานี้หรือไม่และถ้าเป็นเช่นนั้นฉันจะแก้ไขได้อย่างไรเพื่อให้สามารถเก็บเวลาแต่ละตัวอย่างได้
เพื่อให้บริบทนี่คือร่างของฉัน:
#include <eHealth.h>
unsigned long time;
// The setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);
}
// The loop routine runs over and over again forever:
void loop() {
float ECG = eHealth.getECG();
time = millis();
Serial.print(time);
Serial.print(" ");
Serial.print(ECG, 5);
Serial.println("");
delay(50);
}
millis()
ถูกขัดจังหวะดังนั้นdelay()
ไม่ควรส่งผลกระทบต่อมัน