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



Teraz jest 24 kwi 2024, o 01:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 26 wrz 2012, o 19:34 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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

ale Twoja funkcja "pisana na szybko" oczywiście wymaga poprawek.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2012, o 19:52 
Offline
Moderator
Avatar użytkownika

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

Można też i tak:


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


albo tak:

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


i pewnie jeszcze na tysiąc różnych podobnych sposobów

_________________
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 wrz 2012, o 11:34 
Offline
Moderator
Avatar użytkownika

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

No widzisz - wszystko sprowadza się ZAWSZE do jednego. Tzn ludzie szukają "świętego grala" z tą obsługą pojedynczych klawiszy, bo to takie przecież proste, że aż nikomu nie chce się pochylić nad tym aby rozrysować sobie algorytm i opisać jak wygląda czy jak powinna wyglądać taka obsługa. Rzadko kto próbuje to przeanalizować tak jak ja to rozpisałem w pierwszej (niebieskiej) książce. Czyli nikomu nie chce się często pomyśleć nad tym żeby programowo rozróżnić takie stany jak: PRESS, PUSH oraz AutoREPEAT, a szkoda.

rzuć proszę okiem na ten post:

post16079.html#p16079

A potem jeszcze raz sprawdź sobie SuperDebounce() i nie po to żeby zaraz na siłę z tego korzystać - tylko żeby spróbować zrozumieć jak podejść do pisania takich procedur.

Podpowiem że realizacja właśnie takiego efektu, że np:

mamy regulację głośności w TV. Pojawia się na dole często długi pasek postępu i gdy klikamy pojedynczo na pilocie klawisz "głośniej" to pasek skacze o bardzo małe wartości, próba w ten sposób zrobienia głośności na maxa trwałaby wieki. Tymczasem zwykle fajnie to działa że gdy trzymamy klawisz przyciśnięty dłużej to ...... co ?? to pasek zaczyna tym szybciej rosnąć im dłużej go trzymamy - prawda ? I o taki efekt pewnie ci chodzi. Dla mnie np to JEDNA Z PODSTAWOWYCH możliwści i opcji obsługi klawiszy, a związana jest z opcją AutoREPEAT .... i właśnie dzięki niej w SuperDebounce() bez mrugnięcia okiem takie coś zrealizować można a do tego jak widać:

1. zupełnie nieblokująco
2. bez żadnych _delay'ów

spójrz też na zmienną key_time w moich funkcjach obsługi RC5 (piloty) .... toż ta samo-inkrementująca się zmienna właśnie do tego mi służy ;) Oczywiście nie tylko do tego - ma jeszcze 100 innych zastosowań ;) .... ale piszę ci to wszystko żebyś zobaczył - że jak człowiek RAZ usiądzie i wymyśli sobie porządną obsługę klawisza to później przydaje się ona w praktycznie niezmienionej postaci dzięki callbackom w KAŻDEJ sytuacji i dowolnym programie.

Dlatego zachęcam do napisania sobie takiej uniwersalnej obsługi, niż za każdym razem walczyć w kodzie o realizację jakiegoś tam celu .... bo to - dopiero zajmuje czas a o pamięci FLASH już nie wspomnę (to tak a'porpos innego tematu)

_________________
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: 30 wrz 2012, o 19:45 
Offline
Moderator
Avatar użytkownika

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

O! i taka droga mi się podoba ;) .... nie jestem w stanie na razie dłużej posiedzieć przy kodzie ale może ktoś inny coś zauważy - a warto analizować takie kody panowie - bo to pokazuje właściwą drogę. Jak widać wcale nie trzeba koniecznie korzystać z SuperDebounce() ale tworzyć własne rozwiązania ;) .... a tu proszę z timerami programowymi

Tylko że no tak na szybko patrząc to przydałby się jeszcze jeden parametr określający port bo teraz funkcja jest na sztywno związana z PIND ...

_________________
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: 1 paź 2012, o 12:35 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 344
Lokalizacja: Bydgoszcz
Pomógł: 11

Na podstawie Mirkowej funkcji SuperDebounce wydaje mi się że musisz jeszcze dodać jedną zmienną która określa z którego PINU będziesz korzystać czy to jest PIND czy PINC etc. Bo narazie w twojej funkcji masz zadeklarowane zmienne odpowiadające za status i za numer pinu.

Jeśli masz niebieską książkę to rzuć okiem na to jakie zmienne są zadeklarowane w funkcji Mirka SuperDebounce..

Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 paź 2012, o 14:16 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Możesz pokazać jak używasz tej funkcji w programie, bo nie wiem po co keyStatus jest argumentem.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 paź 2012, o 21:27 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Mam nadzieję, że minusStatus to zmienna globalna, bo w innym przypadku to tam może być cokolwiek.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Powyższy zapis to nie wiem co to właściwie jest. Może za mało wiem :oops:
Ja bym zrobił tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 paź 2012, o 22:24 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Sam siebie poprawię ;) . W języku C tak powinno być:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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