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 15 mar 2025, o 23:05


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