18-08-2018, 16:51
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:
A wynik pokaże, że zmienne nie są inkrementowane co 1ms, czyli o tysiąc co wydruk:
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();
}
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