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



Teraz jest 19 lut 2025, o 09:57


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 
Autor Wiadomość
PostNapisane: 22 lis 2016, o 19:37 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

Witam kolegów, potrzebuję pomocy bardziej doświadczonych programistów w napisaniu programu. Jestem na początku swojej przygody z językiem C i sam sobie z tym nie poradzę. Nie chodzi mi o podanie "gotowca" tylko o wskazanie drogi jaką należy podążać aby uzyskać zaplanowany efekt.
Potrzebuję zrobić sterownik który będzie płynnie ściemniał i rozjaśniał niezależnie 3 żarówki led 12V. Ściemnianie i rozjaśnianie ma być dokonywane enkoderem a przycisk w nim wbudowany ma służyć do wyboru 1 z 3 żarówek. Może ktoś natknął się na podobny układ lub ma program na którym mógłbym się wzorować.

Z góry dziękuję za pomoc.



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

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

Poradzisz sobie, poradzisz!
Poczytaj odnośnie PWM w BB (Sterowanie PWM str.236).
Obsługę enkodera znajdziesz na blogu: http://mirekk36.blogspot.co.uk/2016/02/ ... dstaw.html
lub:
http://mirekk36.blogspot.co.uk/2013/04/ ... i-w-c.html
http://mirekk36.blogspot.co.uk/2013/04/ ... y-cz2.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2016, o 20:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Ogólne składowe Twojego programu możesz znaleźć:
- sterowanie jasnością poszcz. LED'ów - PWM programowy - źródło BB
- liniowość jaśniej/ciemniej w osi położenia - tablica z korekcją GAMMA - źródło mkAVRCalculator
- obsługa enkodera - źródło - cykl poradników na YT kol. Mirka.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2016, o 20:49 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

Czytałem w BB o PWM, na arduino trochę się nim też bawiłem, zapoznam się jeszcze z callbekami co to za zwierz i z czym to się je. Poradniki o enkoderach oglądałem. Pozostało zaprzyjaźnić się z enkoderem i spróbować poskładać to w całość.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2016, o 21:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 mar 2015
Posty: 202
Pomógł: 15

Callbacki to Ty sobie zostaw na podwieczorek. Zacznij od zaświecenia diody później wprowadz pwm do płynnego zciemiania i rozjaśniania, obsługę enkodera itd. Małymi kroczkami do przodu.

Wysłane z mojego HTC One_M8 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lis 2016, o 21:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 maja 2016
Posty: 42
Pomógł: 0

Cześć. Ja kiedyś miałem problem co i jak z tym enkoderem i w końcu napisałem sobie własną funkcję do obłsugi enkodera. Może nie jest optymalna ale działa.

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


enco_cnt to zmienna która zawiera stan zliczania enkodera, oprócz tego trzeba sobie w programie zadeklarować zmienne pomocnicze:
a
last
new
W moim programie funkcję wywoływałem cyklicznie co 1 ms i działa. I jest zbudowana tak, że wykrywa każdy impuls, czyli co jedno tryknięcie enkodera są 4 impulsy. Jeśli chcesz żeby wartość zmieniała się co 1 to najprościej podzielić wynik przez 4.
Kod zamieszczam w celach edukacyjnych-może się przyda;).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 18:37 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

Idąc za radą kolegi adamBo zacząłem od sterowania programowego PWM.
Powstało mi coś takiego
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie wiem teraz tylko jak dodać do tego obsługę enkodera aby można było nim ściemniać i rozjaśniać diody.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 20:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 mar 2015
Posty: 202
Pomógł: 15

No to ok, krok do przodu. A teraz krok do tyłu ;) wywal kolego te wszystkie fory z pomiędzy pętli while (niepotrzebnie idziesz w liniowość programu)i zamiast tego wstaw obsługę dwóch przycisków jeden od wypełnienia -- a drugi do ++. Do enkodera dojdziemy :)

Wysłane z mojego HTC One_M8 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 20:55 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

A więc jutro działam dalej ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2016, o 22:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Poczytaj o tablicach. Przyda Ci się tu taka 3-elementowa, a do kompletu jeszcze jedna zmienna, do wskazywania elementu tej tablicy i masz praktycznie gotowe zarządzanie wyborem led, którego ściemniasz :-)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2016, o 19:46 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

Dodałem obsługę 2 przycisków do ściemniania i rozjaśniania, trochę musiałem się wspomóc materiałami z forum, ale efekcie końcowym zadanie domowe zostało odrobione :)

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: 25 lis 2016, o 21:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 mar 2015
Posty: 202
Pomógł: 15

I świetnie...a teraz małe kino zimowe http://mirekk36.blogspot.com/2016/02/en ... w.html?m=1

Wysłane z mojego HTC One_M8 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2016, o 12:39 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

A więc muszę w pętli while sprawdzać czy został dokonany obrót enkoderem, jeśli tak to w jaką stronę i w zależności od tego OCR0 zwiększyć o 1 lub zmniejszyć o 1? Dobrze myślę?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2016, o 12:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Tak

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2016, o 11:30 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

Oglądałem część poradników i próbowałem użyć najprostszej obsługi enkodera jednak bez rezultatu. Sprzętowo podłączony jest według schematu Pana Mirka (korzystam ze zestawu ATB 1.05)

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: 28 lis 2016, o 12:33 
Offline
Użytkownik
Avatar użytkownika

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

kejza napisał(a):
ISR( INT0_vect ); {


Usuń średnik i powinno ruszyć. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2016, o 12:47 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

Jak usunąłem średnik to pojawił się błąd w tym miejscu
Multiple markers at this line
- previous declaration of '__vector_1' was here
- static declaration of '__vector_1' follows non-static
declaration



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2016, o 12:58 
Offline
Użytkownik
Avatar użytkownika

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

kejza napisał(a):
Jak usunąłem średnik to pojawił się błąd w tym miejscu


Zgadza się, bo procedurę obsługi przerwania umieściłeś w pętli while().
Powinno być tak:
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: 28 lis 2016, o 13:05 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

Aha :) jak wrócę wieczorem z pracy to sprawdzę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2016, o 23:24 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

Program się kompiluje bez błędów jednak dalej nie działa jak powinien. Dioda świeci cały cały czas i nie ma reakcji na kręceniem enkoderem. W którym miejscu mam błąd



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2016, o 23:35 
Offline
Moderator
Avatar użytkownika

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

Masz zestaw 1.05 i nie obejrzałeś ostatniego cyklu poradników o enkoderze ?

_________________
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: 28 lis 2016, o 23:40 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

Jeszcze nie doszłam do ostatniej części poradnika, chciałem na bieżąco wprowadzać zmiany w kodzie do mojego układu aby uzyskać pożądany efekt



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 08:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 mar 2015
Posty: 202
Pomógł: 15

Witam. Słuchaj nasunęło mi się parę rzeczy które kolą mnie w oczy mianowicie czytając Twoje posty odniosłem wrażenie, że próbujesz pisać kod "na siłę " , bez zrozumienia ... średnik za procedurą przerwania itp. Nie pisze tego by Cię urazić nie to jest moim celem. Od samego początku tego tematu staram Ci się pokazać drogę którą powinieneś przejść by "zrozumieć" temat. Mam nadzieję, że gdy piszesz "oglądałem poradniki Mirka" to masz na myśli oglądanie ze zrozumieniem. Osobiście przechodzenie całej drogi uważam za robienie Krok po Kroku to co Mirek pokazuje w poradnikach i co jest podstawą oglądanie ich do samego końca. Pozdrawiam

Wysłane z mojego HTC One_M8 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 13:13 
Offline
Nowy

Dołączył(a): 22 cze 2016
Posty: 22
Pomógł: 0

Za szybko chciałem osiągnąć zamierzony efekt i krążyłem "po omacku". Teraz jednak po przodu małymi krokami tam żeby wyciągnąć wnioski z tej nauki. Robię tył zwrot i odpalam poradniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2016, o 13:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 mar 2015
Posty: 202
Pomógł: 15

I bardzo dobra decyzja

Wysłane z mojego HTC One_M8 przy użyciu Tapatalka



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 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