BMP180 Library zawiecza cały kod - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: BMP180 Library zawiecza cały kod (/watek-bmp180-library-zawiecza-ca%C5%82y-kod) |
BMP180 Library zawiecza cały kod - Jarewa0606 - 16-02-2019 Mam taki mały problem, o ile czujnik podłączony wszystko gra, ale jak odłączony (np.uszkodzony) zawiesza mi cały program i nie wiem czy to po stronie Wire.h czy Adafruit_BMP085.h (zmieniałem juz na SFE_BMP180) na pewno nie w moim kodzie bo przykłady to samo nie wiem jak to sprawdzić w której bibliotece jest błąd. BMP180 Library zawiecza cały kod - wchpikus - 16-02-2019 Pokaz kod. Wysłane z mojego SM-G950F przy użyciu Tapatalka RE: BMP180 Library zawiecza cały kod - kaczakat - 16-02-2019 W bibliotekach Arduino to jest normalne zachowanie, szczególnie od Adafruit, ich biblioteki bardzo często to dema mające pokazać funkcjonalność sprzętu przez nich sprzedawanego. Można to bardzo łatwo naprawić, znajdź sobie I2C scanner, zobacz jak jest sprawdzana obecność "czegoś" pod danym adresem na I2C, za każdym razem zanim zapytasz czujnik sprawdź czy on w ogóle jest na magistrali. Poza tym biblioteka pewnie strzela requeset o dane i czeka sobie w nieskończoność na odpowiedź, to też powinieneś sobie oprogramować. Co prawda coś jest na magistrali więc pytasz, nie ma odpowiedzi w wyznaczonym czasie to wracasz do głównego programu i coś robisz z tą informacją. RE: BMP180 Library zawiecza cały kod - Jarewa0606 - 16-02-2019 no np taki kod Kod: #include <Wire.h> A to problem https://scr.hu/djjaKk7 RE: BMP180 Library zawiecza cały kod - kaczakat - 16-02-2019 Pewnie uruchamiasz to na jakimś ESP, za reset pośrednio odpowiada ta linijka: Kod: if (!bmp.begin()) { RE: BMP180 Library zawiecza cały kod - Jarewa0606 - 16-02-2019 Tak ale nawet gdy usunę tą linijkę a dam samo bmp.begin() w setup... To później w loop każde odwołanie do tego czujnika kończy się tak samo... Resetem a nawet zawieszeniem. Wiec zrobie tak jak pisałeś wcześniej ic2 skaner komendą Wire.beginTransmission(address); adres juz znam mam nadzieje że adres się nie zmienia i jest stałą wartością. RE: BMP180 Library zawiecza cały kod - kaczakat - 16-02-2019 To zaproponowany pomysł jako metoda uniwersalna, ale z Twojego kodu jasno wynika, że wynik działania bmp.begin() zwraca 0 gdy nie zainicjuje tego czujnika, wartość z tej funkcji można przypisać do zmiennej JESTCZUJNIK i potem wszystko co związane z czujnikiem uzależnić if (JESTCZUJNIK) {to coś z tym dalej rób} else {zrób kod alternatywny gdy czujnika nie ma}. Może w tej bibliotece jest więcej zabezpieczeń, przejrzyj słowa kluczowe, plik nagłówkowy i ewentualnie same funkcje w *.cpp. Może też być tak, że w już w trakcie działania czujnik zniknie, to biblioteka się wyłoży i sposób ze sprawdzaniem po adresie zadziała lepiej, można też wtedy zrobić reset tym while(1) i po ponownym uruchomieniu funkcja begin już ustawi tak zmienną JESTCZUJNIK by się to nie wieszało. |