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



Teraz jest 28 mar 2024, o 20:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 6 lip 2021, o 08:58 
Offline
Użytkownik

Dołączył(a): 09 sty 2021
Posty: 66
Pomógł: 0

Witam, zacząłem obsługiwać kalwiaturę matrycową 4x4 i napotkałem problem, mianowicie chcę abym po kliknięciu po kliknięci dana czynność np zmiana stanu diody wykonywała się tylko raz i abym mógł zareagować na zwolnienie klawisza. Próbowałem to osiągnąć wprowadzając zmienną typu bool tak jak w kodzie poniżej i ogólnie to działa ale sposób mija się z celem, ponieważ dla wszystkich klawiszy musiałbym wprowadzić 16 zmiennych. W jaki jeszcze sposób moge osiągnąć efekty o jakich piszę?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lip 2021, o 10:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

antosV10 napisał(a):
W jaki jeszcze sposób moge osiągnąć efekty o jakich piszę?

Ja myślę nad wieloma sposobami:
- programowe - wykorzystując wejścia PD0 do PD3 jako PCINT17 do PCINT19, wtedy mam cztery opcje reakcji na zachowanie klawisza(opadanie, max, min i rosnące).
- sprzętowe - tworząc sumator węzła z oporników podłączonych do rzędów klawiatury i węzeł podłączony do INT0 lub INT1 a rzędy podłączyć do innego portu. Tym sposobem można by reagować na zachowanie dowolnego klawisza - reakcja na użycie klawiatury.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lip 2021, o 19:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Dlatego, że nie mogę edytować swojego posta piszę erratę.
Odnośnik "sprzętowe" ma być "sumator logiczny węzła z diod"(NOR na diodach).
Aby nie zmieniać schematu - odnośnik "sprzętowe" - węzeł podłączyć do ADCn i sprawdzać, czy został wciśnięty klawisz(jeśli zmienił stan, to wykonać zadanie). W BB jest opisana klawiatura analogowa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lip 2021, o 07:18 
Offline
Użytkownik
Avatar użytkownika

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

Cytuj:
...i ogólnie to działa ale sposób mija się z celem, ponieważ dla wszystkich klawiszy musiałbym wprowadzić 16 zmiennych...


Nie wiem co złego widzisz w dodatkowych zmiennych. Ja w podobnych przypadkach powołuje sobie zawsze jakaś zmienną o potrzebnej wielkości (tu byłaby to uint16_t), którą nazwałbym, np MKEY (coś jak wirtualny rejestr). Procedura odczytu klawiatury aktualizowania by kolejne bity tej zmiennej w zależności od stanu przycisku aż do czasu ich zmiany dzięki temu temu mógłbym korzystać jak ze zwykłego portu tyle, że 16-bitowego. Pozostaje kwestia konstrukcji samego odczytu i przypisywania do tej zmiennej stanu przycisków. Na pewno nie było by to żmudne przypisywanie do typu bool tylko praca w pętli i szybka aktualizacja kolejnych bitów zmiennej MKEY.

_________________
http://www.sylwekkuna.com



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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