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



Teraz jest 29 mar 2024, o 16:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 8 sty 2019, o 18:06 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

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:

Składnia: [ Pobierz ] [ Ukryj ]
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:

Składnia: [ Pobierz ] [ Ukryj ]
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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sty 2019, o 19:02 
Offline
Nowy

Dołączył(a): 21 kwi 2016
Posty: 16
Lokalizacja: Mińsk Mazowiecki
Pomógł: 1

Ahoj,
ja miałem przyjemność przypisywać ID czujników pojedynczo, poniżej funkcja przypisania Id czujnika z wykorzystaniem enkodera ;-)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2019, o 18:11 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

Nie mam żadnych przycisków i enkodera w projekcie :P 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:
Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
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 :)



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: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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