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



Teraz jest 23 lip 2025, o 10:33


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: 27416
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: 27416
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: 3229
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 0 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO