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? 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 10 cze 2025, o 11:32


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 6 lut 2022, o 21:34 
    Offline
    Użytkownik

    Dołączył(a): 21 gru 2018
    Posty: 74
    Pomógł: 0

    Witam.
    Trenuje działanie encodera z poradnika Mirka i już wydawało mi się że wszystko rozumiem ale niestety pełna klapa.
    Podpowiedzcie jak to wywołanie callbecka napisać i wykonać poprawnie przy założeniu:
    startujemy od wartości 'zmienna1= 300'
    -jak ograniczyć wartość regulowania 'zmienna' od dołu wartością 200 a górna max 500
    Nie potrafię nic wymyślić (2 lata nic nie robiłem przy avr i sporo wyparowało ), pewnie zupełnie źle do tego podszedłem ale może "ktuś cuś" pomoże :?: .


    /
    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: 6 lut 2022, o 23:39 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 324
    Lokalizacja: Rybnik
    Pomógł: 23

    Dodajesz warunek IF, czyli po wyliczeniu zmiennej, jeśli jest wyższa od 500, to zmienna = 500 a jeśli jest mniejsza od 200 to zmienna = 200, jeśli ci o to chodzi.

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lut 2022, o 15:01 
    Offline
    Użytkownik

    Dołączył(a): 21 gru 2018
    Posty: 74
    Pomógł: 0

    To by było zbyt proste, po dodaniu if rozwala całą regulacje. Popełniłem pewnie jakiś błąd w sposobie regulacji tylko nie umiem tego rozgryźć.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 lut 2022, o 15:17 
    Offline
    Moderator
    Avatar użytkownika

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

    Kaz K napisał(a):
    To by było zbyt proste, po dodaniu if rozwala całą regulacje.

    No i jak tu komuś pomóc - na takie stwierdzenia - zamiast pokazania własnego kodu po modyfikacji ...

    _________________
    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: 7 lut 2022, o 19:40 
    Offline
    Użytkownik

    Dołączył(a): 21 gru 2018
    Posty: 74
    Pomógł: 0

    Oto kod.
    Ograniczenie działa ok tylko problem okazuje się z wartością enco_cnt po przekroczeniu wartości -20 i + 20 nie od razu zmniejsza lub zwiększa zmienna a dopiero po osiągnięciu tej różnicy 20. Jak to ogarnąć by działało od razu.

    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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lut 2022, o 12:06 
    Offline
    Moderator
    Avatar użytkownika

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

    No to zastanów się - bo wprowadzasz sam i sobie i tutaj mega zamieszanie. Najpierw piszesz o swojej zmiennej - o nazwie "zmienna" którą sam inkrementujesz albo dekrementujesz - choć nie wiadomo po jasny gwincik przy inkrementacji stosujesz zmienna + getencoder() a przy dekrementacji zmienna - 1 ... no to jest już pierwszy strzał we własną stopę dla przejrzystości kodu

    Później piszesz że warunek if nie działa

    Później że już działa ale nie zmienia się dobrze zmienna podawana przez get_encoder() ... to w końcu o którą zmienną tobie chodzi ? Toż get_encoder podaje ci zawsze zawartość wewnętrznego licznika a nie twojej zmiennej "zmienna" - czemu żesz skoro bawisz się sowją zmienną to jej nie wyświetlacz w lcd_int() ?

    A jeśli już chcesz pracować na liczniku wewnętrznym w bibliotece to nie mów mi że w pliku nagłówkowym widzisz TYLKO funkcję get_encoder() a nie widzisz funkcji set_encoder() ... jak myślisz do czego jest ta druga ? No właśnie do ustawiania ale w bezpieczny sposób wartości wewn licznika. Tylko musisz się zdecydować którego chcesz używać - bo równie dobrze możesz używać swojej zmiennej ale to ją wyświetlaj albo używaj tylko wbudowanego licznika ale wtedy używaj odpowiednich funkcji do jego pobierania albo ustawiania (czyli ograniczania)

    _________________
    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: 8 lut 2022, o 16:52 
    Offline
    Użytkownik

    Dołączył(a): 21 gru 2018
    Posty: 74
    Pomógł: 0

    Dziękuje Mirku bo mnie oświeciłeś . Jak sobie głowę nabiłem że muszę użyć get encoder a później tak namieszałem że horror :oops:
    Toż to najprostsze jakie może być (poniżej kod) ale ja już tak mam że sprawy trudne rozwiązuje a przy prostych kombinuje jak "kuń po góre".
    Dziękuję jeszcze raz za wyprostowanie.

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


    A tak na marginesie może kiedyś zrobisz mini poradnik o PID bo to co w sieci to często makabra.



    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ł: Majestic-12 [Bot] i 2 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