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



Teraz jest 14 lis 2024, o 16:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 30 gru 2012, o 15:48 
Offline
Nowy

Dołączył(a): 30 gru 2012
Posty: 2
Pomógł: 0

Witam serdecznie wszystkich Atnelowiczów :D
Dopiero zaczynam swoją przygodę z programowaniem, narazie więcej analizują gotowych projektów aniżeli robię swoich (tak więc proszę o wyrozumiałość..).
Aktualnie jestem na etapie DS18x20/1wire.
Program z DVD działa znakomicie, jednak chciałem go sobie w ramach testów rozbudować o kilka dodatkowych funkcji np. załączanie wyjść przy określonych temperaturach - ogrzewania, alarmu o przekroczeniu temp. itp czyli taki mini regulator (gdyby jeszcze się udało dołożyć histerezę..) ;)
Zatrzymałem się niestety już na początku, ponieważ nie wiem z jakiej zmiennej wyciągnąć wartość temperatury do porównania z "nastawą" w programie :?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2012, o 16:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

Przeanalizuj funkcje display_temp() oraz zapisz_temp masz tam wszystko co CI potrzeba oraz poczytaj w pierwszej ksiazce Mirka o 1wire.
Dokladnie interesuje CIe ta funkcja :
/* dokonujemy odczytu temperatury z pierwszego czujnika o ile został wykryty */
DS18X20_read_meas(gSensorIDs[1], &subzero, &cel, &cel_fract_bits)

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2012, o 16:19 
Offline
Moderator
Avatar użytkownika

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

Witamy na forum ;) ... a wyżej rzeczywiście kolega jachu podał gotową odpowiedź czyli nazwy interesujących cię zmiennych.

_________________
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: 30 gru 2012, o 21:13 
Offline
Nowy

Dołączył(a): 30 gru 2012
Posty: 2
Pomógł: 0

Dziękuję za tak szybką pomoc.
Coś zrobiłem, ale chyba nie do końca dobrze.

Temp=(cel+(cel_fract_bits*0.1)); /*temperatura odczytana z czujnika

...tylko którego bo są 2?
No i czy dodawanie części dziesiętnej wogóle ma sens?

Kolejne pytanie:

napis na LCD wywołuję komendami:

lcd_locate(2,10);
lcd_str_P(PSTR("Grzalka ON "))


zmienne wyświetlam:

lcd_locate(1,0);
lcd_int(Tzad);


A czy można w jednej komendzie wysłać zmienną oraz znak np. (zmienna1,"pompa",zmienna2) bo próbowałem to zapisać w różny sposób i zawsze kończy się błędem.

No i ostatnie (narazie :) ) pytanie jak najprościej zamiast delay_ms wykorzystać przerwanie (chodzi mi o opóźnienie podczas odczytu przycisku) ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2012, o 22:33 
Offline
Moderator
Avatar użytkownika

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

pebman napisał(a):
Dziękuję za tak szybką pomoc.
Coś zrobiłem, ale chyba nie do końca dobrze.

Temp=(cel+(cel_fract_bits*0.1)); /*temperatura odczytana z czujnika

...tylko którego bo są 2?
No i czy dodawanie części dziesiętnej wogóle ma sens?


Po pierwsze ZAPOMNIJ raz na zawsze - przecież przez całą książkę piszę o tym, czyli o stosowaniu zmiennych typu float, a ty co tu wyżej robisz ??? jakieś obrzydliwe ;) mnożenie x 0.1 .... brrrr bleeee NIE NIE NIE ;) wywal to. Czy nie przychodzi ci do głowy jak można prosto porównywać temperatury na liczbach całkowitych ??? eeeeh ;) panowie panowie

np chcesz porównać zmierzoną temperaturę w temp1 z zadaną stałą temperaturą w temp2 (niech to będzie np 22.3 st C) - jak najprościej ci to pokazuję terazzzzzzz:

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


i teraz gdzieś w kodzie sobie porównujesz:

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


mam nadzieję że po tym zapomnisz o KOCICH typach float na procku ;)


pebman napisał(a):
Kolejne pytanie:

napis na LCD wywołuję komendami:

lcd_locate(2,10);
lcd_str_P(PSTR("Grzalka ON "))


zmienne wyświetlam:

lcd_locate(1,0);
lcd_int(Tzad);


A czy można w jednej komendzie wysłać zmienną oraz znak np. (zmienna1,"pompa",zmienna2) bo próbowałem to zapisać w różny sposób i zawsze kończy się błędem.


Można - prosty sposób - napisz sobie tą KOMENDĘ czyli funkcję panie kochany - funkcję ;)

pebman napisał(a):
No i ostatnie (narazie :) ) pytanie jak najprościej zamiast delay_ms wykorzystać przerwanie (chodzi mi o opóźnienie podczas odczytu przycisku) ?


Nooo tu kolego ! oj oj .... a czytał chociaż RAZ całą książkę tak na sucho ??? chyba nie - więc sytuacja się powtarza. W książce masz wszystko na ten temat ale widzę że też nie zaglądał na mojego bloga - a tu znowu masz WSZYSTKO i nawet w uproszczeniu .... weź że poczytaj o drganiach styków na moim blogu całe 3 części ale szczególnie zajrzyj do 2-giej:

http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

i w ogóle częściej zaglądaj, czytaj i oglądaj FILMY PORADNIKI na blogu - bo będziesz mocno do tyłu ;)

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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