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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 10 lip 2025, o 03:48


    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: 1978
    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 11 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