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



Teraz jest 15 mar 2025, o 01:57


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 9 sie 2015, o 17:28 
Offline
Nowy

Dołączył(a): 26 mar 2014
Posty: 18
Pomógł: 0

Cześć.

Mam podłączony czujnik temperatury który wyświetla aktualną temperaturę w pierwszej linii wyświetlacza.
Wynik z czujnika zamieniam na wartość całkowitą (część całkowita * 10)+ część ułamkowa. dla np 31.5 stopni będzie 315.

W drugiej linii chcę aby wyświetlało minimalną i maksymalną temperaturę.
Temperaturę max wskazuje prawidłowo, pokazuje tą najwyższą, temperaturę min wyświetla jako 0 i nie wiem dlaczego :?

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


Proszę o pomoc, gdzie leży problem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 17:59 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Ten fragment wygląda dobrze.
Zmienną min masz zadeklarowaną jako globalną.
Nie zerujesz jej gdzieś?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 18:07 
Offline
Nowy

Dołączył(a): 26 mar 2014
Posty: 18
Pomógł: 0

Nie zeruję.

Jeżeli np zainicjuję ją jakąś wartością i zakomentuję fragment w kodzie ze zmienną min to wyświetla mi tą wartość jaką ją zainicjowełem.
tak jakby warunek if zeruje mi tą zmienną ale nie wiem dlaczego



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 18:19 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

A wyświetl sobie też aktualną temperaturę, może pierwszy pomiar jest równy zero?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 18:20 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

No tak, musi to brać z temp.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 18:29 
Offline
Nowy

Dołączył(a): 26 mar 2014
Posty: 18
Pomógł: 0

Aktualną temperaturę wyświetla w funkcji odczyt, pozniej zamienia prawidłowo na temp (na liczbę całkowitą np 321) i zwiększa się max jeżeli jest większa od max ale nie zmniejsza mi tej minimalnej jak temperatura będzie niższa. W pierwszej linii na wyświetlaczu wyświetla mi aktualną temperaturę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 18:36 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

dm88 napisał(a):
ale nie zmniejsza mi tej minimalnej jak temperatura będzie niższa


Nie bardzo rozumiem, zmniejsza przecież do zera z zadanych 50, wg tego co wcześniej pisałeś.
Zmień może testowo warunek na temp mniejsza od min i większa od zera.
Temp musi przyjmować zero w którymś momencie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 18:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

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

i zobacz co się stanie. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 18:57 
Offline
Nowy

Dołączył(a): 26 mar 2014
Posty: 18
Pomógł: 0

Zmieniłem warunek na

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


i działa zgodnie z założeniami ale nie wiem czemu wczesniej nie dzialalo.
Gdzieś mialem bląd ale nie wiem gdzie :?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 18:58 
Offline
Użytkownik
Avatar użytkownika

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

Panowie przeciez zmienna. MIN jak i MAX jest zawsze przy starcie deklarowana jako 0.

Przed while zaraz po sprawdzaniu czujnika wpisz sobie linijke



min = temp;



Ta linijka ma sie wywolac tylko 1 przy starcie programu.

Namazane ze smarta.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 19:00 
Offline
Użytkownik
Avatar użytkownika

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

Mozesz jeszcze dac.

If(min > temp) {

}

Namazane ze smarta.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 19:02 
Offline
Nowy

Dołączył(a): 26 mar 2014
Posty: 18
Pomógł: 0

Wrocilem do tego co było wczesniej, dodałem to co pisał Anshar i tez działa.
Muszę to przeanalizować :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 19:05 
Offline
Użytkownik
Avatar użytkownika

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

Nie sprawdzales przed petla temperatury wiec zmienna temp wynosila 0 i tak ci zapisywalo jako min.

Zobacz ze masz uint16_t temp;


Namazane ze smarta.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 19:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

majster napisał(a):
Nie sprawdzales przed petla temperatury wiec zmienna temp wynosila 0 i tak ci zapisywalo jako min.

Zobacz ze masz uint16_t temp;


Namazane ze smarta.


Dokładnie tak. ;)

------------------------ [ Dodano po: 2 minutach ]

Wystarczy, że zamiast tego co Ci napisałem wywołasz tylko tą funkcję:
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: 9 sie 2015, o 19:12 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Ale przecież zmienna temp, zapisuje się odczytem na początku pętli przed przypisaniem MIN.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 19:26 
Offline
Nowy

Dołączył(a): 26 mar 2014
Posty: 18
Pomógł: 0

ale w petli przed sprawdzeniem warunku do temp przypisuję wartość (cel * 10) + cel_fract_bits to czemu ma dalej 0?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 19:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

jerrylu napisał(a):
Ale przecież zmienna temp, zapisuje się odczytem na początku pętli przed przypisaniem MIN.


Wszystko zależy od tego jak jest napisana funkcja odczyt(). Jeśli tak jak w BB to pierwszy odczyt nastąpi po około 3 sekundach, a zmienna min już dawno przyjmie wartość równą zero.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 19:33 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Zajrzałem do kodu Mirka, zaiste tak jest.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 19:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

dm88 napisał(a):
ale w petli przed sprawdzeniem warunku do temp przypisuję wartość (cel * 10) + cel_fract_bits to czemu ma dalej 0?


Ponieważ zmienne cel i cel_fract_bits, są zmiennymi globalnymi, więc z automatu również przyjmą wartości równe 0.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 19:37 
Offline
Nowy

Dołączył(a): 26 mar 2014
Posty: 18
Pomógł: 0

dokladnie jak w BB
Już czaje :) Ale nie wiem czy dobrze:

leci program w petli, wywoluje funkcję odczyt która nic nie zwraca bo s1_flag jest = 0 i zmienna temp przyjmuje wartość 0 a poźniej zmienna się nie zmienia bo nie spełania warunku if(temp < min) czyli If (temp < 0)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 19:49 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Po wejściu do funkcji odczytu s1_flag jest = 0 i nic się nie dzieje przez sekundę.
Po sekundzie jest wywoływana funkcja start_meas.
Po następnej następuje odczyt.

------------------------ [ Dodano po: 5 minutach ]

Czyli pierwsze wywołanie funkcji odczyt (i ileś kolejnych) nie ustawia zmiennych.

------------------------ [ Dodano po: 5 minutach ]

Są one dalej zerowe.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 21:58 
Offline
Użytkownik
Avatar użytkownika

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

jerrylu napisał(a):
Czyli pierwsze wywołanie funkcji odczyt (i ileś kolejnych) nie ustawia zmiennych.
Są one dalej zerowe.



Dokł2adnie tak :)
Dlatego MIN wynosi 0

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



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

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