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 24 maja 2025, o 05:38


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
    Autor Wiadomość
    PostNapisane: 19 cze 2014, o 16:32 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2013
    Posty: 104
    Pomógł: 0

    Witam.
    Mam pewien problem. Posiadam 2 czujniki DS18B20 i chcę z nich odczytywać temperaturę.

    Tutaj fragment kodu z bibliotek Mirka.

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


    Problem jest taki, że chciałbym temperatury z dwóch czujników mieć w dwóch zmiennych typu double.

    Np.:

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


    Jak można coś takiego wykonać? Jak połączyć te zmienne subzero, cel, cel_fract_bits, aby było to w jednej zmiennej typu double?
    Pozdrawiam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 cze 2014, o 16:43 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Ja mam taki pomysł, ale nie wiem czy będzie ok.. można zawsze sprawdzić:)

    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 ]

    Nie wiem tylko czy to rzutowanie na typ double jest tutaj potrzebne, ale spróbuj tak jak jest :)


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 cze 2014, o 16:57 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2013
    Posty: 104
    Pomógł: 0

    Nie bardzo to działa. Poza tym przykład:

    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: 19 cze 2014, o 17:06 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 cze 2014
    Posty: 34
    Zbananowany użytkownik

    Pomógł: 2

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


    Poprawiony kod kolegi wyżej. Zakładając, że cel_fract_bits, zawiera tylko część dziesiętną, a nie setną, jak setną to kod kolegi będzie działać, jeżeli dziesiętną, to ten co tutaj wkleiłem. Nie powinno to dla Ciebie stanowić większego problemu.


    MXST4


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 cze 2014, o 17:07 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Dobra, nigdy nie korzystałem z tego termometru i myślałem że zwraca on wartość ułamkową po przecinku w dwóch liczbach, w częściach dziesiętnych i setnych czyli cel.XX a nie cel.X, jeżeli zwraca z dokładnością do jednej liczby po przecinku to pomnóż razy 10 a nie 100

    ------------------------ [ Dodano po: 1 minucie ]

    MXST4 napisał(a):
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    double temp1;
     
    if (!subzero) {
    temp1 = (double)(((100*cel)+cel_fract_bits*10)/100);
    } else {
    temp1 = (double)((((100*cel)+cel_fract_bits*10)/100)*(-1));
    }
    GeSHi


    Poprawiony kod kolegi wyżej. Zakładając, że cel_fract_bits, zawiera tylko część dziesiętną, a nie setną, jak setną to kod kolegi będzie działać, jeżeli dziesiętną, to ten co tutaj wkleiłem. Nie powinno to dla Ciebie stanowić większego problemu.


    MXST4


    Kolega mnie ubiegł :lol:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 cze 2014, o 17:13 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2013
    Posty: 104
    Pomógł: 0

    Ok, to już mam, dzięki za pomoc. Teraz jeszcze tylko konwersja double --> char.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 cze 2014, o 17:25 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 cze 2014
    Posty: 34
    Zbananowany użytkownik

    Pomógł: 2

    Cytuj:
    Conversion functions for double arguments.

    Note that these functions are not located in the default library, libc.a, but in the
    mathematical library, libm.a. So when linking the application, the -lm option needs
    to be specified.

    • char  dtostre (double __val, char __s, unsigned char __prec, unsigned char
    __flags)
    • char  dtostrf (double __val, signed char __width, unsigned char __prec, char
    __s)



    źródło: avr-libc-user-manual


    Inny pomysł to budowa własnej funkcji do konwersji. Nie jest to jakoś bardzo trudne.


    MXST4



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 cze 2014, o 20:08 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27405
    Lokalizacja: Szczecin
    Pomógł: 1043

    pavel0910 napisał(a):
    Teraz jeszcze tylko konwersja double --> char.


    to jest droga do nikąd ....


    co za problem napisać małą funkcję do porównywania

    a temperatury zamieniać na liczby całkowite np

    ( (cel*10)+cel_fract_bits ) * (subzero)?-1:1;

    i już masz np 20.3 stC będzie liczbą 230, np temperatura -7.5 stC będzie -75

    i co za problem takie liczby całkowite porównywać .... kilka dni temu jak nie wczoraj to samo wyjaśniałem na forum

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 cze 2014, o 20:34 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    mirekk36 napisał(a):
    i co za problem takie liczby całkowite porównywać .... kilka dni temu jak nie wczoraj to samo wyjaśniałem na forum


    chyba Pan będzie musiał kolejny poradnik nagrać... :lol:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 cze 2014, o 21:40 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27405
    Lokalizacja: Szczecin
    Pomógł: 1043

    Nefarious19 napisał(a):
    chyba Pan będzie musiał kolejny poradnik nagrać...


    dokładnie i to nie jeden ;) .... mam nadzieję że w tym o DS18B20 będzie trochę ciekawostek

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 cze 2014, o 21:47 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    mirekk36 napisał(a):
    dokładnie i to nie jeden .... mam nadzieję że w tym o DS18B20 będzie trochę ciekawostek


    Jak Pan zrobi poradnik o tym termometrze to ode mnie samego ma Pan ze sto odsłon :lol: ale serio mówiąc przydałby się taki poradnik, bo co chwila pojawiają się na forum pytania o ten termometr. Co my byśmy bez Pana zrobili :D ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 cze 2014, o 17:24 
    Offline
    Moderator zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 3228
    Lokalizacja: Kraków - obok FAB5 ATMEL'a
    Pomógł: 91

    Cytuj:
    Jak Pan zrobi poradnik o tym termometrze


    Hm, wydawało mi się że rozdział w książce wystarczy :shock:

    _________________
    http://www.jaglarz.info



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 cze 2014, o 17:27 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Jaglarz napisał(a):
    Cytuj:
    Jak Pan zrobi poradnik o tym termometrze


    Hm, wydawało mi się że rozdział w książce wystarczy :shock:


    Mnie również bezproblemowe podłączenie i użycie bibliotek + opis w książce = super termometr

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 20 cze 2014, o 17:45 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Cytuj:
    Mnie również bezproblemowe podłączenie i użycie bibliotek + opis w książce = super termometr


    Cieszy mnie to niezmiernie. Ale jak widać niektórym nie wystarcza, skoro pojawia się tyle pytań. Pan Mirosław wspomniał że być może coś takiego nagra, z czego ja się ucieszyłem, tak jak cieszę się z każdego video poradnika w jego wykonaniu bo do mnie np. słowo pisane nie zawsze dobrze trafia.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 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