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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 12 kwi 2025, o 16:34


    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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 ] [ Zaznacz wszystko ]
    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