• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Lcd I2c i bmp180
#1
Witam!
Mam pewien problem. Mianowicie próbujewyświetlać na wyświetlaczu lcd I2c 20x4 odczyty z czujnika bmp180. Program jest ok tylko mam pewne podejżenia co do adresów urządzeń. Bo o ile w komędzie wyświetlacza mam zapisane jaki ma adres tak w kolumnie czujnika BMP już Nie. Dokładniej o tą linijkę. 
Kod:
SFE_BMP180 bmp180;
Czujnik działa bo na porcie szeregowy wyświetla ciśnienie i temperaturę ale na lcd już nie. Wie ktoś może co mogę z tym zrobić?
Pozdrawiam!
 
Odpowiedź
#2
Adres po prostu jest podany wewnątrz biblioteki, np. Adafruit daje takie biblioteki- dema do tego co sprzedają, to wiedzą jaki sprzedają czujnik, masz inny to sobie musisz pogrzebać i zmienić. Ale jak podaje dane, to znaczy, że ma właśnie taki jak biblioteka oczekuje. Wyświetlacze mogą mieć różne adresy, uruchom szkic I2Cscanner i sprawdź co Ci się zgłasza na magistrali I2C.
 
Odpowiedź
#3
Sprawdzałem I2C scanner i pokazało. Ale chyba wezmę się za przerabianie biblioteki. Dzięki za pomoc.
 
Odpowiedź
#4
Ale po co chcesz przerabiać, skoro nie potrzebujesz do czujnika (przecież robi Ci odczyty), a do LCD ustawiasz? LCD ma dodatkowo czasami możliwość konfiguracji adresu, czasami są jakieś piny do włączenia/rozłączenia lub podłączenia zamiennie między VCC a GND. Popatrzeć do środka zawsze można, czasami wszystko co się robi w inicjalizacji danego obiektu jest podane z domyślnymi wartościami, w programie podajesz je tylko wtedy, gdy chcesz zmienić.
 
Odpowiedź
#5
Masz racje ogarnąłem lepszy program i działa. Dzięki za pomoc!
PS. Nie wiesz może jak napisać program do ustawiania czasu potencjometrami na ds2321 albo ds1307? 
Pozdrawiam!
 
Odpowiedź
#6
Potencjometrami raczej się tego nie robi, może chodziło Ci o encoder. Wiem jak to zrobić, ale nigdy nie robiłem, majstruje z Arduino tylko dla siebie, w bibliotece jest przykład jak zapisać czas wysyłając linijkę przez UART, DS2321 jest tak dokładny, że przez rok nie mam potrzeby zmieniać czasu (błąd poniżej 1minuty). Najczęściej ostatnio bawię się DS, te z kolei pobiorą sobie czas z NTP.
Musisz sobie zrobić jakieś menu, w menu zmieniać zmienne tymczasowe odpowiadające danymi z zegara, na koniec skopiować całość do ds. Całość powinna być tak zrobiona by nie zatrzymywać pętli głównej, po prostu nie wyświetlasz bieżącej pracy uc, tylko operacje na tych zmiennych, ale jeśli gdzieś masz migać ledem to led ma dalej migać. Wpisz w google "menu Arduino" i znajdziesz przykłady, np: https://starter-kit.nettigo.pl/2017/04/m...aczu-16x2/.
 
Odpowiedź
#7
enkoder też może być. DS pobiera z daty wgrania programu a jak odłączę zasilanie i włączę to się resetuję dlatego potrzebuje zrobić taką możliwość. z menu tez knuje ale jeszcze trochę zostało do działającego "menu". postaram się coś wykombinować jak będę miał problem to się odezwę.
 
Odpowiedź
#8
Kup sobie DS3231 z baterią za 0,89$ z wysyłką na Alliexpress  link. Moduł zegara bez swojej baterii nie ma większego sensu.
 
Odpowiedź
#9
Mój ds3231(bo mam) ma baterię ale to chyba w programie jest ze godzinę ma zczytać zapisaną podczas ładowanie a RTC używać tylko do domierzania czasu.
 
Odpowiedź
#10
Są przykłady w bibliotekach jak ustawić czas z UART, taka linijka przykładowa RRRRMMDDWGGMM, nie pamiętam dokładnie, ale jak poszukasz to znajdziesz. Czas wgrania szkicu jest z dokładnością kilku s, bo jest to czas kompilacji. Czas ustawienia z monitora to już <1s. Po pierwszym wgraniu można zakomentować te linie od ustawienia czasu z kompilacji, bo sam komputer może się rozjeżdżać minutę na tydzień, zwykle robi synchronizację z zegarem atomowym raz na tydzień, więc zależy jak trafisz.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości