13-08-2018, 06:32
Podejście do tematu jest nieprawidłowe. Załóżmy że chcesz zliczać ile razy sąsiad był u Ciebie w domu. Możesz zainstalować kamerkę i sprawdzać codziennie o 11 czy sąsiad jest - możesz akurat nie trafić i zliczanie będzie błędne, ilość za mała. Możesz sprawdzać co 1h, ale sąsiad może przyszedł i jeszcze nie wyszedł - zliczanie będzie za duże. Lepiej ustawić na furtce między posesjami czujnik i zliczać w określonym czasie ile razy wchodził?
Przykład jest na forum, tutaj będzie max 1000 impulsów/sekundę, wystarczy: https://forum.arduinopolska.pl/watek-fas...u-programu 08-08-2018, 16:07 gdzie był zmieniany stan zmiennej, ty ją sobie zwiększaj, zmień też w linijce attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING ); może też być RISING, adekwatnie do rezystorów podciągających wewnętrznego/zewnętrznego/rodzaju impulsu.
Jeśli impulsów jest mało to lepiej mierzyć czas między nimi, tutaj wg mnie będzie wystarczająco dokładnie mierząc ich liczbę/s.
Kolejna rzecz to double - jak używasz UNO to nie ma double, jest tylko float. Można mieć zdefiniowaną taką zmienną, ale to i tak jest float - wolne obliczenia, niedokładne, większy kod. Lepiej taką zmienną zwiększyć x100 i potem na końcu podzielić /100, ale wszystko robić w zmiennych całkowitych, najlepiej dodatnich jeśli nie spodziewasz się liczb ujemnych - typy uint8_t, uint16_t,uint32_t,uint64_t, im mniejszy typ tym lepiej. Zmienne całkowite są zwykle lepszym wyborem.
Przykład jest na forum, tutaj będzie max 1000 impulsów/sekundę, wystarczy: https://forum.arduinopolska.pl/watek-fas...u-programu 08-08-2018, 16:07 gdzie był zmieniany stan zmiennej, ty ją sobie zwiększaj, zmień też w linijce attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING ); może też być RISING, adekwatnie do rezystorów podciągających wewnętrznego/zewnętrznego/rodzaju impulsu.
Jeśli impulsów jest mało to lepiej mierzyć czas między nimi, tutaj wg mnie będzie wystarczająco dokładnie mierząc ich liczbę/s.
Kolejna rzecz to double - jak używasz UNO to nie ma double, jest tylko float. Można mieć zdefiniowaną taką zmienną, ale to i tak jest float - wolne obliczenia, niedokładne, większy kod. Lepiej taką zmienną zwiększyć x100 i potem na końcu podzielić /100, ale wszystko robić w zmiennych całkowitych, najlepiej dodatnich jeśli nie spodziewasz się liczb ujemnych - typy uint8_t, uint16_t,uint32_t,uint64_t, im mniejszy typ tym lepiej. Zmienne całkowite są zwykle lepszym wyborem.
Miło być decenianym https://buycoffee.to/kaczakat