ATNEL tech-forum https://forum.atnel.pl/ |
|
DS18B20 - ID (odróżnienie czujników) https://forum.atnel.pl/topic21850.html |
Strona 1 z 1 |
Autor: | Tom92 [ 8 sty 2019, o 18:06 ] |
Tytuł: | DS18B20 - ID (odróżnienie czujników) |
Witam, Mam problem odnośnie czujników DS18B20. Chodzi mi dokładnie o to, że mam np. dwa czujniki (temp_in, temp_out). Obydwa mierzą temperaturę i pokazują ją na wyświetlaczu. Poniżej kod z odczytu temperatury: język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Ale w powyższym kodzie wiadomo, że odróżnia te czujniki kolejność na magistrali 1-wire. I TERAZ jeżeli wyciągnę pierwszy w kolejności czujnik do się zaczyna mieszać, czyli w miejscu na wyświetlaczu gdzie ma pokazać error pierwszego czujnika pokazuje temperaturę drugiego czujnika, który wskoczył na jego miejsce. A w miejsce drugiego pokazuje error... Dużo szukałem i natknąłem się na ten temat: topic939.html W opisie jest punkt 7, który mnie interesuje, a mianowicie przypisanie czujnika do odpowiedniego miejsca. Nie wiem czy dobrze myślę, pomóżcie: PRZED MAIN() - powinienem odczytać id z dwóch czujników, - wpisać id czujników do osobnych zmiennych np. temp_in, temp_out, - zapisać te zmienne do pamięci EEPROM W PĘTLI - odczytać id z dwóch czujników, - wpisać id czujników do osobnych zmiennych np. t1, t2, - odczytać zmienne temp_in, temp_out z pamięci eeprom do ram - porównać zmienne t1 == temp_in, t2 == temp_out - jeżeli się zgadzają wyświetlić temperaturę, a jeżeli nie to wyrzucić error. Zacząłem przerabiać powyższy kod i nie wiem czy jestem na dobrej drodze: język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Lub może ktoś już napisał funkcję przypisującą czujnik do określonego miejsca i zechciałby się podzielić? Pozdrawiam. |
Autor: | roberto_k_w [ 8 sty 2019, o 19:02 ] |
Tytuł: | Re: DS18B20 - ID (odróżnienie czujników) |
Ahoj, ja miałem przyjemność przypisywać ID czujników pojedynczo, poniżej funkcja przypisania Id czujnika z wykorzystaniem enkodera język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pozdrawiam |
Autor: | Tom92 [ 9 sty 2019, o 18:11 ] |
Tytuł: | Re: DS18B20 - ID (odróżnienie czujników) |
Nie mam żadnych przycisków i enkodera w projekcie Dlatego problem rozwiązałem w inny sposób, żeby nowych funkcji nie tworzyć. Jakby ktoś miał taką potrzebę to podaję jak to zrobiłem. Osobno napisałem programik odczytujący i wysyłający adresy czujników na terminal w takiej postaci: Kod: 28866fcb080000b0 Następnie wpisałem go w kodzie w ten sposób do zmiennej temp_in: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. I odczytuję temperaturę w ten sposób podając zmienną przechowującą odpowiedni adres czujnika: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Teraz czujniki się nie mieszają i nie jest pokazywana temperatura w zależności od kolejności na magistrali 1-wire. Wiadomo jak czujnik się uszkodzi to trzeba odczytać ID nowego czujnika i wpisać jego adres w miejsce starego |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |