• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Niedokładność pomiarowa - problem z odczytywaniem impulsow
#33
Lepiej mieć 100% danych w znanym okresie czasu niż niewiadomy procent w niewiadomym okresie. Zmiana biblioteki nie miałaby wpływu na jakość danych.  Kolejna porcja obliczeń/zbierania danych po prostu rozpoczęłaby się o ten czas później, zmieniłoby to tylko częstotliwość prezentowania danych.  
Bibliotek timers.h pewnie jest kilka, ja zerknąłem do środka tej od Wojtk: https://forum.arduinopolska.pl/watek-bib...iwym-delay i działa to przykładowo tak:

Kod:
#include "Timers.h"

Timers <6> timer;

uint32_t zm0,zm1, zm2, zm3, zm4,zm5;

void setup() {
Serial.begin(115200);

timer.attach(0,1,f0);
timer.attach(1,1,f1);
timer.attach(2,1,f2);
 timer.attach(2,1,f3);
  timer.attach(2,1,f4);
timer.attach(3,1000,f5);
}

 

void f0( ) {
zm0++;
}

void f1( ) {
zm1++;
delay(2);
}

void f2( ) {
zm2++;
}

void f3( ) {
zm3++;
}

void f4( ) {
zm4++;
delay(10);
}

void f5( ) {
 
  Serial.print("zm1: ");
 Serial.print(zm1);
    Serial.print("  zm1: ");
 Serial.print(zm1);
    Serial.print("  zm1: ");
 Serial.print(zm1);
    Serial.print("  zm1: ");
 Serial.print(zm1);
    Serial.print("  zm1: ");
 Serial.print(zm1);
    Serial.print("  zm1: ");
 Serial.println(zm1);
 delay(20);
 zm0=zm1=zm2=zm3=zm4=0;
}



//loop method
void loop() {
timer.process();

}
A wynik pokaże, że zmienne nie są inkrementowane co 1ms, czyli o tysiąc co wydruk:

Kod:
zm1: 84  zm1: 84  zm1: 84  zm1: 84  zm1: 84  zm1: 84
zm1: 82  zm1: 82  zm1: 82  zm1: 82  zm1: 82  zm1: 82
zm1: 82  zm1: 82  zm1: 82  zm1: 82  zm1: 82  zm1: 82
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Niedokładność pomiarowa - problem z odczytywaniem impulsow - przez kaczakat - 18-08-2018, 16:51

Skocz do:


Przeglądający: 4 gości