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



Teraz jest 28 mar 2026, o 11:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 30 paź 2016, o 18:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 501
Lokalizacja: Siedlce
Pomógł: 9

Więc do rzeczy potrzebuje napisać funkcję która:
1.odczytuje temperaturę przy starcie programu
2.następnie porównuje temperaturę odczytaną przy starcie z temperaturą odczytywaną cały czas na bieżąco w pętli jeśli temperatura jest niższa niż ta odczytana wcześnie to wtedy ją wyświetlam na LCD jeśli nie to na LCD nadal jest wyświetlana ostatnia najniższa zarejestrowana temperatura.
3.w pętli cały czas porównuję temperatury i jak tylko zarejsetruję najniższą to ją od razu zapisuję do LCD.

Oczywiście po restarcie procka zostaje to zresetowane.
i np jeśli włączę w południe to odczyta mi np. temperaturę 15stopni i pracujące urządzenie przez całą dobę zarejestruje mi że w nocy(czy kiedykolwiek) była "-2"
Napisałem wprawdzie coś takiego ale nie działa to satysfakcjonująco może coś poprawić ? tylko co?

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

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


i tą funkcję wklejam zaraz po odczycie z pierwszego (we fladze )czujnika:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


ps. wiem że zmienna(suma_templow ) jest źle określona bo nie ma sensu gdy jest 1,8 C albo np 2,7 C bo jednak niższa temperatura to 1,8 a tutaj w tym przypadku wychodzi że są równe:

Prawdę mówiąc to liczę na jakieś konkretne rozwiązanie bo niestety na chwilę obecną mam pustkę ...w głowie... :cry:

_________________
Ucz się ucz ,bo po to tutaj jesteś...



Ostatnio edytowano 30 paź 2016, o 20:13 przez RadekB86, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2016, o 19:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2013
Posty: 119
Lokalizacja: Cinisi
Pomógł: 12

Witaj, możesz najniższą temperaturę zapisywać sobie w pamięci EEPROM kontrolera, wtedy nie będzie Ci się ona kasowała po resecie. Możesz przy starcie odczytywać tę temperaturę z pamięci. Mirek dobrze to wyjaśnia w poradnikach
http://mirekk36.blogspot.it/2012/11/avr ... iazek.html

_________________
sig off :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2016, o 20:24 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

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


Najprościej przekonwertować zmierzoną wartość temperatury na U2 i wtedy po prostu możesz wykonać proste porównanie wartości: temperatury aktualnej i tej zapamiętanej jako ujemna. Przy pierwszym obiegu pętli while porównuje zmierzoną temperaturę z temp_act z temp_low ustawioną na wartość większą niż możliwa do odczytania z czujnika ( 5000 odpowiada w tym wypadku 500 stopniom ). To tyle, powinno działać po uzupełnieniu funkcji jak w komentarzach. Teraz muszę uciekać, ale w razie pytań pisz, postaram się później wyjaśnić.

Pozdrawiam, QuadMan.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2016, o 20:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

może jakoś w tę stronę?
zamienić temperaturę na liczbę ciągłą ?

poglądowo!!

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

:mrgreen: tak mi się wymyśliło. :roll:

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

a kolega QuadMan był szybszy i profesjonalniejszy. :D


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 paź 2016, o 21:32 
Offline
Moderator
Avatar użytkownika

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

nie dość , że już w niejednym poradniku takie zagadnienia poruszałem - to powiedz mi pan - czy tak trudno sobie zrobić temperaturę bez przecinka ?

(część_przed_przecinkiem * 10) + część_ po_przecinku ? Oczywiście jeśli temperatura ujemna to mnożysz tę liczbę * -1

dzięki czemu do wszelkich porównań będziesz używał liczby całkowitej. Czyli np nie temperatura 18,5 tylko 185 , nie temperatura 12,3 tylko 123, nie temperatura -5,4 tylko -54


i porównujesz ile wlezie


Autor postu otrzymał pochwałę

_________________
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 paź 2016, o 22:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

ha...
No właśnie. :)
Na int'ach to nawet nie trzeba dodawać przykładowych 2000. :) Fajnie. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2016, o 19:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2013
Posty: 501
Lokalizacja: Siedlce
Pomógł: 9

O tak dobrze mnie koledzy nakierowali właśnie zupełnie wyleciało mi z głowy żeby liczbę przeciekową "przerobić" na całkowitą do porównania ...eh a pomyśleć że sam już to robiłem tylko w odwrotną stronę bo chciałem konkretną cyferkę podać na wyświetlacz LED i tam również dokonywałem takich "obliczeń" i do tego wykorzystywałem jeszcze operator "miodulo" ;)

Poniżej moje rozwiązanie najpierw deklaracje zmiennych do zapisu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Potem w funkcji głównej zaraz po odczycie z czujnika jeszcze przed pętlą while(1):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

I na koniec już w pętli while(1) zaraz po 1 fladze odczytaniu z 1 czujnika
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dziękuje i najważniejsze że osiągnąłem zamierzony efekt. 8-)

_________________
Ucz się ucz ,bo po to tutaj jesteś...



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

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