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



Teraz jest 13 mar 2025, o 06:13


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 9 lut 2015, o 21:59 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 18 maja 2012
Posty: 16
Pomógł: 0

Witam serdecznie i proszę o pomoc.
Mam urządzenie sterowane PWM-em, ale nie wiem jak się do tego zabrać.
Założenie jest takie, pwm ma sterować prędkością urządzenia ale w 10 krokach.
Nie wiem od jakiej wartości pwm to urządzenie startuje więc chciałbym stworzyć tablicę
w której będzie 9 elementów co w razie złego dobrania wartości pozwoli mi na zmianę
wartości w samej tablicy. Sterowanie dwoma przyciskami GÓRA, DÓŁ i jednym przyciskiem
100%. W zależności od naciśniętego przycisku następuje zwiększenie lub zmniejszenie kroku o jeden.
Do kroku będzie przypisana wartość z tablicy. A po naciśnięciu przycisku 100% nastąpi
uruchomienie na 100% wypełnienia, ale tylko na czas trzymania przycisku potem ma
powrócić do kroku na jakim skończył wcześniej. Jeszcze chcę aby po uruchomieniu układu
pwm ustawiał się na połowie zakresu czyli na kroku 5.
Walczę z BB ale nic mi nie wychodzi.
Uruchomiłem pwm na zestawie uruchomieniowym. Jeżeli znajdzie się ktoś kto mnie
naprowadzi lub podpowie będę bardzo wdzięczny.
To jest to co mam
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 lut 2015, o 23:21 
Offline
Użytkownik

Dołączył(a): 27 lut 2013
Posty: 230
Pomógł: 4

Musisz użyć funkcji do OBSLUGI klawiszy nie blokujacej glownej pętli programu czyli bez delay po szukaj jej na blogu Mirka pod haslem dragania styków to bajki



Ostatnio edytowano 9 lut 2015, o 23:26 przez michal1210, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2015, o 23:21 
Offline
Moderator
Avatar użytkownika

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

Po pierwsze - użyj obsługi klawiszy z tego miejsca:
http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

Po drugie - wprowadź zmienną, która będzie inkrementowana albo dekrementowana za pomoca tych klawiszy a nie od razu w klawiszu śmigasz OCR

później w pętli głównej w zależności od zawartości zmiennej (o ile się zmieniła od ostatniego przebiegu pętli) zmieniaj OCR


Autor postu otrzymał pochwałę

_________________
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: 20 lut 2015, o 22:04 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 18 maja 2012
Posty: 16
Pomógł: 0

Witam po dłuższej przerwie.
Mam już obsługę trzech klawiszy i walczę dalej. Na razie sprawdziłem sobie klawisze na diodach.
Wyszło 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.

I rozumiem, że teraz zamiast zmiany stanu diody jako akcja przypisać własne akcje czyli zmniejszenie,
zwiększenie i wartość max.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2015, o 19:30 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 18 maja 2012
Posty: 16
Pomógł: 0

Koledzy wymyśliłem sobie tak, a mianowicie:
trzeci przycisk zaprogramowałem według wskazań funkcją key_pres, i ten sam przycisk zaprogramowałem key_push_up i jak skompilowałem
to żadnych błędów nie ma ale akcja jest jak się trafi.
Więc pytanie moje jest następujące.
Czy tak można, czy trzeba to ugryźć inaczej? Jeżeli tak nie można to proszę napisać dlaczego.
To jest mój kod:
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 lut 2015, o 22:34 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 18 maja 2012
Posty: 16
Pomógł: 0

Jeżeli mam fragment w którym zwiększam i zmniejszam OCR0 czyli
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to jak zatrzymać zwiększanie OCR0 gdy już dojdzie do wartości MAX
i analogicznie jak zatrzymać zmniejszanie gdy dojdzie do wartości MIN.
W tej chwili zwiększając przyciskiem wartość OCR0 dochodzi do MAX
i następuje wyzerowanie i zaczyna rozjaśniać diodę od nowa i przy
zmniejszaniu jest ten sam efekt dochodzi do 0 i zaczyna znów od 255.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 lut 2015, o 23:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2012
Posty: 193
Pomógł: 6

Siemka, instrukcje warunkowe sprawdzające wystarczą do tego by PWM "nie latał w kółko"
Kod:
if(OCR0 > 0+krok_zmniejszenia) OCR0 -=krok_zmniejszenia;

Kod:
if(OCR0 <= 255 - krok_zwiekszenia) OCR0 +=krok_zwiekszenia;


Pozdrawiam
KoreX



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