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 w 2025? 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 12 kwi 2025, o 16:34


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 8 sty 2020, o 21:24 
    Offline
    Użytkownik

    Dołączył(a): 26 mar 2013
    Posty: 25
    Pomógł: 0

    Jak widać jestem całkowicie początkujący, ale zapytam.

    Pierwszy przykład z książki, przerabiam go sobie i chce zrobić klawisze pod różnymi portami.

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


    Próbowałem zmieniać
    if (! (PINC&klawisz) ) na if (! ((PINC|PIND)&klawisz) ) i zero odzewu, wrażenia jakby cały czas był sygnał na PD6. Robiłem już kilkanaście przeróbek których nie przytaczam, ale bez efektu.

    Sorki, ale jestem chyba tępy lub leniwy, chociaż spędziłem nad tym już trochę czasu.

    Jakieś sugestie?

    Z góry dziękuje.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 sty 2020, o 00:19 
    Offline
    Użytkownik

    Dołączył(a): 09 lut 2017
    Posty: 75
    Lokalizacja: 51°03′22″N 15°45′48″E
    Pomógł: 18

    To nie taki banalny problem jakby się na pierwszy rzut oka zdawało. Przyznam się, że chwilę musiałem pomyśleć czemu to nie działa.

    Problem jest w tym, że sprawdzasz stan portu D używając maski klawisza (zmienna "klawisz") z portu C i na odwrót. Tak nie można robić bo jeśli chcesz sprawdzić stan klawisza K3 to tak naprawdę sprawdzasz też stan pinu PC6. Jeśli na tym pinie jest stan niski (a tak jest w tym wypadku) to tak jakby klawisz był cały czas wciśnięty. Możesz to sprawdzić podciągając piny do VCC:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Problem można rozwiązać badając stan danego portu używając masek dotyczących tylko tego portu. Można na przykład dodać do funkcji "klawisz_wcisniety" drugi argument, podając na którym porcie sprawdzamy klawisz.

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


    Można też w sposób bardziej zaawansowany, przekazując jako drugi argument adres odpowiedniego portu (identycznie jak w funkcji SuperDebounce z BB):

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


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 lut 2020, o 21:33 
    Offline
    Użytkownik

    Dołączył(a): 26 mar 2013
    Posty: 25
    Pomógł: 0

    Serdecznie dziękuję za pomoc :)

    Jakby co kod działa, jest poniżej

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    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: 26 lut 2020, o 21:45 
    Offline
    Moderator
    Avatar użytkownika

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

    Robert - nie zatrzymuj się na tym - to jest tylko BARDZO ale to BARDZO POGLĄDOWY przykład - aby zrozumieć w ogóle jak i o co chodzi z przyciskami - czytaj dalej książkę bo tam będą dużo lepsze i bardziej zaawansowane przykłady - np funkcja SuperDebounce(). Ale z kolei gdyby ta była za trudna - to sięgaj też do mojego bloga i przed nią ZAPOZNAJ się DOKŁADNIE z tym artykułem:

    http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

    i oglądaj moje poradniki wideo uzupełniające do książek na kanale youtube mirekk36 ;)

    _________________
    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: 27 lut 2020, o 17:37 
    Offline
    Użytkownik

    Dołączył(a): 26 mar 2013
    Posty: 25
    Pomógł: 0

    temu tu jestem i zadaje pytania...

    Dzięki. :)



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    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