Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 lut 2026, o 13:49


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 23 ] 
Autor Wiadomość
 Tytuł: DS18B20____kod
PostNapisane: 8 maja 2015, o 18:06 
Offline
Użytkownik

Dołączył(a): 06 lip 2014
Posty: 131
Pomógł: 0

Witacie potrzebuje pomocy a mianowicie potrzebuje gotowy kod który pozwoli na wyświetlanie temperatury z czujnika DS18B20 na LCD

jeśli ktoś posiada taki kod to proszę o udostępnienie chodzi mi o jak najprostszy kod dzięki któremu wyświetlę temperaturę z 1 czujnika

kod który jest w niebieskiej książce jest skomplikowany prosił bym o prostszy


dziękuje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 18:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Zobacz tu:http://forum.atnel.pl/topic11157.html
W pliku MenuLCDDS18B20.zip znajdziesz taką "prostszą" bibliotekę wraz ze źródłem strony z której pochodzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 19:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Mnich16 napisał(a):

kod który jest w niebieskiej książce jest skomplikowany prosił bym o prostszy


dziękuje.


No kolego masz książkę a wygląda na to że jej nie przeczytałeś skoro kod jest skomplikowany.

Tak dla podpowiedzi na płyta dvd dołączona do książki i tam masz gotowy program o który pytasz.

A jak nie rozumiesz kodu pytaj wytłumaczymy.


Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 20:27 
Offline
Użytkownik

Dołączył(a): 06 lip 2014
Posty: 131
Pomógł: 0

tutaj pod tym linkiem jest fajnie opisany kod do DS18B20 http://www.google.pl/url?sa=t&rct=j&q=& ... 5102,d.bGQ

jednak nie działa mi to prawidłowo na wyświetlaczu wyświetla się ciągle liczba 366 i nic więcej, jeśli ktoś ma chwile czasu to może podpowie dlaczego tak jest

dzięki



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 20:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Kolego to nie jest forum wróżek ... może pokażesz kod który masz do tej pory ?

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 20:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

I schemat albo chociaż zdjęcia jak to wszystko masz podłączone?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 20:52 
Offline
Użytkownik

Dołączył(a): 06 lip 2014
Posty: 131
Pomógł: 0

kod tylko przepisałem z tego linku wstawiłem tylko wyświetlenie na LCD

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 3 minutach ]

podłączone mam na zestawie uruchomieniowym gotronik poza LCD które funkcjonuje dobrze mam podłączony tylko jeden przewód od czujnika (który jest również w tym zestawie) do PD0 wiec podłączenie jest ok



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 20:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

a osobnego zasilania czujnika tam nie ma przypadkiem ?

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 21:09 
Offline
Użytkownik

Dołączył(a): 06 lip 2014
Posty: 131
Pomógł: 0

podłączenie jest w porządku ponieważ gdy wgrywam kod do 1-wire z niebieskiej książki temperatura jest poprawnie wyświetlana



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 21:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
...a to:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

...jest na pewno dobrze? - chyba PORTD.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 21:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

A gdzie podłączonego masz tego DS18B20, na porcie PORTD, PD0?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 21:24 
Offline
Użytkownik

Dołączył(a): 06 lip 2014
Posty: 131
Pomógł: 0

Tak PORTD, PD0 tu mam podłączony czujnik



kolega kicajek ma racje że zamiast PIND ma być PORTD ale to niestety nic nie poprawiło nadal jest liczba 366, jak wgrywam program z odłączonym czujnikiem to też jest ciągle ta liczba 366



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 21:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Źle przepisałeś, sprawdź ostatnią funckję, jest tam błąd oraz
zamiast
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

w oryginale jest:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 2 minutach ]

W/g mnie powinno być jednak PIND a nie PORTD.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 21:59 
Offline
Użytkownik

Dołączył(a): 06 lip 2014
Posty: 131
Pomógł: 0

jeśli chodzi o ostatnią funkcję to chodzi ci oto że przepisałem ucCounter a w tym pdfie jest iCounter tak? myśle że tam nie ma być iCounter. W kodzie nie ma nawet takiej zmiennej zadeklarowanej w tym w tym pdfie chyba jest literówka, ale buffer to już ja źle przepisałem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 22:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

No tak masz rację z tym iCounter.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 22:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

anshar napisał(a):
W/g mnie powinno być jednak PIND a nie PORTD.

Tak patrzyłem co się z tym #define dzieje później:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i tak jakoś dziwnie; jeśli nazwane OUT...ale nie sprzeczam się.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 22:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Zmień linijkę:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

na:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Sprawdziłem i działa.

------------------------ [ Dodano po: 13 minutach ]

Np tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 23:25 
Offline
Użytkownik

Dołączył(a): 06 lip 2014
Posty: 131
Pomógł: 0

O super działa dzięki wielkie

ale jeszcze jedno dlaczego pomiar na LCD mi tak miga jeśli po wyświetleniu, po tej linijce lcd_str(cStringBuffer); daje opóźnienie np. 500ms To przez 500ms mam pomiar na LCD a przez 500ms nie ma nic i tak miga a jak usunę opóźnienie całkiem to nie ma żadnego wskazania na LCD



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 23:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Dlatego, że w pętli głównej jest czyszczenie ekranu po to by dokonać konwersji i wyświetlenia temperatury, następnie delay i tak w kółko.
Zobacz w kodzie wyżej co zmieniłem, dodam, że już nie miga. :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 maja 2015, o 23:46 
Offline
Użytkownik

Dołączył(a): 06 lip 2014
Posty: 131
Pomógł: 0

hm naprawdę dobrze ci się to wyświetla??? w takiej postaci jak wrzuciłeś? bo czyszczenie ekranu dałeś przed pętlą główną czyli czyszczenie wykonało się tylko jeden raz, jak zrobiłem tak jak ty masz to pojawiają się nowe pomiary ale stare nie znikają i robi się kocioł, tak sobie myślę że jak by to czyszczenie było na początku pętli a opóźnienie na końcu to ekran jest czyszczony potem wykonują sie jakieś operacje potem jest wyświetlenie temperatury i potem czeka bo jest opóźnienie i znowu wyczyści, wyświetli i czeka i chyba nie powinno migać ale miga hm



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2015, o 00:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Dodaj tą linijkę:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2015, o 01:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Dlatego, aby nie migało :D użyłem lcd_locate (przecież wyżej wrzuciłem Ci prawie cały kod, porównaj z tym co masz). Dopisz, zmień i zobaczysz, że działa prawidłowo, tzn w pętli głównej za każdym razem będzie nadpisywana stara wartość nowym pomiarem temperatury dokładnie w tym samym miejscu na wyświetlaczu LCD, czyli w tym przypadku w pierwszej linii i od szóstego miejsca nastąpi wyświetlenie zawartości bufora i nie trzeba czyścić za każdym obiegiem pętli głównej ekranu.

------------------------ [ Dodano po: 21 minutach ]

A w oryginalnym kodzie miga dlatego, że najpierw jest czyszczenie ekranu, później tak jak piszesz "jakieś operacje", są one związane z DS18b20, które są ściśle powiązane z tym delay'em 750ms, czyli przez ten czas ekran jest "czysty", a póżniej dopiero następuje wyświetlenie temperatury. Aby w ogóle można było coś zobaczyć na ekranie użyty był kolejny delay 200ms. Następnie znowu czyszczenie, przez 750ms nic na ekranie itd.
Jeśli całkowicie wywalisz tego drugiego delaya no to nic nie zobaczysz na ekranie, bo znowu się wyczyści, prawda? Jeśli wywalisz tego pierwszego, to nie otrzymasz temperatury z czujnika, bo on potrzebuje właśnie takiego czasu do prawidłowego działania.
Ale nie trzeba wcale używać delay'ów, można użyć timerów programowych. Wszystko masz opisane w niebieskiej książce. Proponuję przyczytać ją od deski do deski.
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2015, o 11:32 
Offline
Użytkownik

Dołączył(a): 06 lip 2014
Posty: 131
Pomógł: 0

Tak już nie miga dziękuje



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 23 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO