Saya menggunakan Arduino Uno untuk mengirim informasi waktu dan tegangan melalui port serial ke Python untuk plot. Namun, interval waktu antara stempel waktu berturut-turut tampaknya meningkat dari waktu ke waktu, memengaruhi plot saya. Ini terutama benar ketika baud rate diatur ke 9600, di mana perbedaan waktu awal saya mungkin 1320 dan meningkat menjadi 16400 setelah periode waktu yang relatif singkat. Ketika laju ini mencapai maksimum 115200 bps, perubahannya lebih lambat dan kurang terlihat, dari sekitar 1340 hingga 1500 bahkan setelah jangka waktu pengiriman yang relatif lama. Semua waktu diberikan dalam mikrodetik.
Saya ingin tahu apakah saya dapat mengurangi atau menghilangkan efek ini, dan jika tidak mengerti mengapa itu ada. Saya telah membaca hal-hal tentang gangguan dan keterlambatan yang menyebabkan hal ini, tetapi saya tidak sepenuhnya menghargai kompleksitas elektronik yang ada dan ingin tahu:
- Bisakah saya mendapatkan ketepatan waktu yang lebih besar?
- Apa yang menyebabkan perubahan waktu ini?
Inilah yang saat ini saya miliki:
#include <eHealth.h>
extern volatile unsigned long timer0_overflow_count;
float fanalog0;
int analog0;
unsigned long time;
byte serialByte;
void setup() {
Serial.begin(9600);
}
void loop() {
while (Serial.available()>0){
serialByte=Serial.read();
if (serialByte=='S'){
while(1){
fanalog0=eHealth.getECG();
// Use the timer0 => 1 tick every 4 us
time=(timer0_overflow_count << 8) + TCNT0;
// Microseconds conversion.
time=(time*4);
//Print in a file for simulation
//Serial.print(time);
//Serial.print(" ");
Serial.print(fanalog0,5);
Serial.print("\n");
if (Serial.available()>0){
serialByte=Serial.read();
if (serialByte=='F') break;
}
}
}
}
}
eHealth.getECG()
harus dilakukan Apakah panggilan itu selalu berlangsung dalam jumlah waktu yang sama?