You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cześć!
W moim przypadku (ESP32866, BME280, PMS7003), ale chyba nie tylko w moim, jest problem związany z tym, że jak chce się przy PMSie ustawić uśrednianie po więcej niż 10 pomiarach to dzieją się dziwne rzeczy. Przy pierwszej serii pomiarowej pomiar 11 zawsze jest błędny, a potem licznik pomiarów (zmienna iPM) wariuje. W moim przypadku po wartości 9, wyskakuje do losowej wartości z przedziału 5-7 i potem się zapętla. Nigdy nie przekracza 9. Potem w tym fragmencie:
if (++iPM == sensorsSettings.numerOfMeasurements) {
averagePM();
iPM = 0;
}
program nie wykrywa, że zmierzono ustawioną liczbę pomiarów i nie wykonuje uśredniania. A jak nie wykonuje uśredniania to nie wystawia ostatecznych wyników.
Wygląda na to, że jest to związane z tym, że tablica pmMeasurements ma na twardo ustawiony rozmiar 10. Po testowej zmianie na np. static unsigned short pmMeasurements[30][3]; i ustawieniu 13 pomiarów, wszystko działa dobrze. Nie wiem czy lepiej tutaj ustawić na twardo większy rozmiar tablicy, czy może w jakiś sposób sparametryzować jej rozmiar, a może po prostu ustawić na stronie konfiguracyjnej ogranicznik dla liczby pomiarów. Pozostawiam to do rozważenia. :)
Jeszcze dorzucę jedną rzecz. Wydaje mi się, że poniższa linia w funkcji takeNormalnPMMeasurements jest błędna: if (pmMeasurements[iPM][2] < 0 || pmMeasurements[iPM][1] > 3000)
W sensie, że drugi warunek pmMeasurements[iPM][1] > 3000 powinien mieć indeks [2], a nie [1].
The text was updated successfully, but these errors were encountered:
Cześć!
W moim przypadku (ESP32866, BME280, PMS7003), ale chyba nie tylko w moim, jest problem związany z tym, że jak chce się przy PMSie ustawić uśrednianie po więcej niż 10 pomiarach to dzieją się dziwne rzeczy. Przy pierwszej serii pomiarowej pomiar 11 zawsze jest błędny, a potem licznik pomiarów (zmienna
iPM
) wariuje. W moim przypadku po wartości 9, wyskakuje do losowej wartości z przedziału 5-7 i potem się zapętla. Nigdy nie przekracza 9. Potem w tym fragmencie:program nie wykrywa, że zmierzono ustawioną liczbę pomiarów i nie wykonuje uśredniania. A jak nie wykonuje uśredniania to nie wystawia ostatecznych wyników.
Wygląda na to, że jest to związane z tym, że tablica
pmMeasurements
ma na twardo ustawiony rozmiar 10. Po testowej zmianie na np.static unsigned short pmMeasurements[30][3];
i ustawieniu 13 pomiarów, wszystko działa dobrze. Nie wiem czy lepiej tutaj ustawić na twardo większy rozmiar tablicy, czy może w jakiś sposób sparametryzować jej rozmiar, a może po prostu ustawić na stronie konfiguracyjnej ogranicznik dla liczby pomiarów. Pozostawiam to do rozważenia. :)Jeszcze dorzucę jedną rzecz. Wydaje mi się, że poniższa linia w funkcji
takeNormalnPMMeasurements
jest błędna:if (pmMeasurements[iPM][2] < 0 || pmMeasurements[iPM][1] > 3000)
W sensie, że drugi warunek
pmMeasurements[iPM][1] > 3000
powinien mieć indeks [2], a nie [1].The text was updated successfully, but these errors were encountered: