मैं सीरियल पोर्ट पर पायथन को प्लॉट करने के लिए समय और वोल्टेज की जानकारी भेजने के लिए एक Arduino Uno का उपयोग कर रहा हूं। हालाँकि समय के साथ समय अंतराल के बीच अंतराल समय के साथ बढ़ती जा रही है, मेरी साजिश को प्रभावित करता है। यह विशेष रूप से सच है जब बॉड दर 9600 पर सेट होती है, जहां मेरा प्रारंभिक समय अंतर शायद 1320 है और अपेक्षाकृत कम समय के बाद बढ़कर 16400 हो जाता है। जब यह दर अधिकतम 115200 बीपीएस हो जाती है तो बदलाव धीमी और कम ध्यान देने योग्य होता है, अपेक्षाकृत लंबे समय तक भेजने के बाद भी लगभग 1340 से 1500 तक। सभी बार माइक्रोसेकंड में दिए गए हैं।
मैं जानना चाहूंगा कि क्या मैं इस प्रभाव को कम कर सकता हूं या समाप्त कर सकता हूं, और यदि नहीं तो समझें कि यह क्यों मौजूद है। मैंने इसे बाधित करने और देरी के बारे में चीजें पढ़ी हैं, लेकिन मैं हाथ में इलेक्ट्रॉनिक्स की जटिलता की पूरी तरह से सराहना नहीं करता हूं और जानना चाहूंगा:
- क्या मैं टाइमिंग में अधिक सटीकता प्राप्त कर सकता हूं?
- समय में इस परिवर्तन का क्या कारण है?
यहाँ मेरे पास वर्तमान में क्या है:
#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()
है? क्या वह कॉल हमेशा समान मात्रा में रहता है?