Witam.
Wpadł mi w ręce czujnik temperatury i ciśnienia BMP180. Znalazłem w internecie sterownik tego czujnika, ale w celu samodoskonalenia i lepszego zrozumienia działania tego urzadzenia postanowiłem tez sam napisać taki sterownik.
I teraz tak - sterownik, który znalazłem w internecie działa rewelacyjnie, wyświetlane ciśnienie odpowiada danym z okolicznych stacji meteorologicznych, również odczyt wysokosci jest dośc dokładny (błąd ok 1 metra, może nawet mniej). Tak samo odczyt temperatury.
Za to sterownik napisany przeze mnie poprawnie wyświetla tylko temperaturę. Ciśnienie, które wyświetla to ok 100/200hPa. Sprawdziłem dokładnie obliczenia, ale nie znalazłem błedów. Po obejrzeniu działającej biblioteki zauważyłem, że są tam zastosowane zupełnie inne typy zmiennych. Nota katalogowa BMP180 określa jakiego typu są poszczególne dane i zastosowałem sie do tego, jednak w działającej bibliotece wygląda to inaczej. Ponizej mój kod:
Na wzór działającej biblioteki zmieniłem
na
i
na
(choć to ostatnie nawet nie wiem jak skutkuje)
i otrzymałem zupełnie inny odczyt. Dalej nieprawidłowy, bo ok 1400hPa, kiedy prawidłowy wynosił ok 1006hPa, ale jednak zupełnie inny od tych ok 200hPa, które otrzymywałem wcześniej. To skłania mnie ku teori, że jest cos nie tak ze zmiennymi. Dla jasności wrzucam bibliotekę do obsługi TWI (tak, za radą kolegów z forum przerzuciłem się na sprzętowe TWI)
I jeszcze male wyjaśnienie pocedury "wysw" - to taki mój wynalazek, że wyświetlam tą procedurą 2 cyfrową warość na 2 wyświetlaczach 8 segmentowych (nie mam na razie dostępu do lepszego wyświetlacza). To tylko kwestia kosmetyczna, mam z tym więcej roboty żeby odczytać wiekszy wynik i nie wyglada to dobrze, ale działa poprawnie i na pewno tu nie siedzi błąd.
Bardzo proszę o pomoc w znalezieniu błędu i pozdrawiam.
Wpadł mi w ręce czujnik temperatury i ciśnienia BMP180. Znalazłem w internecie sterownik tego czujnika, ale w celu samodoskonalenia i lepszego zrozumienia działania tego urzadzenia postanowiłem tez sam napisać taki sterownik.
I teraz tak - sterownik, który znalazłem w internecie działa rewelacyjnie, wyświetlane ciśnienie odpowiada danym z okolicznych stacji meteorologicznych, również odczyt wysokosci jest dośc dokładny (błąd ok 1 metra, może nawet mniej). Tak samo odczyt temperatury.
Za to sterownik napisany przeze mnie poprawnie wyświetla tylko temperaturę. Ciśnienie, które wyświetla to ok 100/200hPa. Sprawdziłem dokładnie obliczenia, ale nie znalazłem błedów. Po obejrzeniu działającej biblioteki zauważyłem, że są tam zastosowane zupełnie inne typy zmiennych. Nota katalogowa BMP180 określa jakiego typu są poszczególne dane i zastosowałem sie do tego, jednak w działającej bibliotece wygląda to inaczej. Ponizej mój kod:
Kod: C / C++
Na wzór działającej biblioteki zmieniłem
Kod: C / C++
na
Kod: C / C++
i
Kod: C / C++
na
Kod: C / C++
(choć to ostatnie nawet nie wiem jak skutkuje)
i otrzymałem zupełnie inny odczyt. Dalej nieprawidłowy, bo ok 1400hPa, kiedy prawidłowy wynosił ok 1006hPa, ale jednak zupełnie inny od tych ok 200hPa, które otrzymywałem wcześniej. To skłania mnie ku teori, że jest cos nie tak ze zmiennymi. Dla jasności wrzucam bibliotekę do obsługi TWI (tak, za radą kolegów z forum przerzuciłem się na sprzętowe TWI)
Kod: C / C++
I jeszcze male wyjaśnienie pocedury "wysw" - to taki mój wynalazek, że wyświetlam tą procedurą 2 cyfrową warość na 2 wyświetlaczach 8 segmentowych (nie mam na razie dostępu do lepszego wyświetlacza). To tylko kwestia kosmetyczna, mam z tym więcej roboty żeby odczytać wiekszy wynik i nie wyglada to dobrze, ale działa poprawnie i na pewno tu nie siedzi błąd.
Bardzo proszę o pomoc w znalezieniu błędu i pozdrawiam.