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



Teraz jest 29 mar 2024, o 00:08


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: 313
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

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: 27212
Lokalizacja: Szczecin
Pomógł: 1041

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 ]
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: 27212
Lokalizacja: Szczecin
Pomógł: 1041

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ł: Brak zidentyfikowanych użytkowników i 6 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