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 5 kwi 2025, o 13:25


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
    Autor Wiadomość
    PostNapisane: 4 sie 2021, o 20:16 
    Offline
    Użytkownik

    Dołączył(a): 03 lut 2016
    Posty: 126
    Pomógł: 0

    Witam. Czytałem dziś na blogu Mirka artykuł o drganiu styków http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html. Jest tam jeden taki kod
    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.

    Zwolnienie przycisku ma zmieniać stan diody LED. Wybaczcie mi proszę, nie jestem w stanie zrozumieć tej pętli
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Dla mnie to wygląda tak: w pierwszym ifie sprawdzam czy przycisk jest wciśnięty, jeżeli jest to
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    jeżeli nie jest to wychodzi program z pętli. Jeżeli jest wciśnięty i trzymany to też program wychodzi z pętli.
    Ale jeżeli był wciśnięty i jest puszczony to: to jest sprawdzany drugi if ten po else. W nim warunek zwraca TRUE bo key_lock po wciśnięciu przycisku przycisku przyjął wartość 1 a skoro jest puszczony to
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    też daje 1, w związku z tym przechodzimy do kolejnego ifa. A w jego warunku
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    key_kock miał wartość 1 po wciśnięciu przycisku i dodatkowo jest preinkrementowany czyli ma wartość 2 ale po zanegowaniu ma wartość 0. I z mojego myślenia wychodzi żeby warunek był spełniony to key_kock w drugim ifie musiał by mieć wartość -1 wtedy po inkrementacji i zanegowaniu miał by wartość 1. Proszę wytłumaczcie mi jak to działa bo najwyraźniej źle myślę.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 sie 2021, o 23:15 
    Offline
    Moderator
    Avatar użytkownika

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

    11jacekj napisał(a):
    Wybaczcie mi proszę, nie jestem w stanie zrozumieć tej pętli

    Spokojnie ;) wybaczamy - ale przede wszystkim TO nie jest pętla tylko WARUNEK IF ... a to spora róznica - także dla ciebie w myśleniu

    11jacekj napisał(a):
    Dla mnie to wygląda tak: w pierwszym ifie sprawdzam czy przycisk jest wciśnięty, jeżeli jest to

    tu dobrze myślisz

    11jacekj napisał(a):
    jeżeli nie jest to wychodzi program z pętli.

    No a tu już mieszasz sobie i plączesz że aż strach ...

    z jakiej pętli wychodzi ? Z głównej pętli programu while(1) { } ... ???? zobacz jak to opisałeś i pomyśl

    nie, tu nie wychodzi z żadnej pętli tylko po else - zwiększa się key o JEDEN i jednocześnie jest sprawdzane czy nie jest równe zero !++key_lock w czasie gdy key_lock ma wartość pomiędzy 1 a 255 i gdy przycisk jest już zwolniony else if( key_lock && (PINC & KEY1 ) ) {

    _________________
    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: 5 sie 2021, o 05:09 
    Offline
    Użytkownik

    Dołączył(a): 03 lut 2016
    Posty: 126
    Pomógł: 0

    Oczywiście że warunek nie pętla, nie wiem dlaczego tak napisałem. Przepraszam za to. W takim razie źle zrozumiałem ten warunek po else:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Ja to co jest w nawiasie rozumiem jako key_lock zwiększ o JEDEN i zaneguj. A z tego co Mirku piszesz powinienem to odczytać jako: "zwiększ o JEDEN i sprawdź czy jest różne od ZERA"?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 sie 2021, o 08:51 
    Offline
    Moderator
    Avatar użytkownika

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

    11jacekj napisał(a):
    A z tego co Mirku piszesz powinienem to odczytać jako: "zwiększ o JEDEN i sprawdź czy jest różne od ZERA"?

    Bo DOKŁADNIE tak jest ;) pewnie zapomniało ci się o tym jak działają dwuczłonowe operatory ++ albo -- w PRE-INKREMENTACJI albo PRE-DEKREMENTACJI ... co masz opisane w Bluebooku ... więc krótko przypomnę ale sięgnij do BB żeby więcej doczytać

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


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

    w związku z powyższym chyba już widzisz, że w warunku

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


    masz do czynienia z PRE-INKREMENTACJĄ a nie POST-INKREMENTACJĄ, a zatem NAJPIERW zmienna key_lock zostanie zwiększona o JEDEN, następnie zostanie zanegowana za pomocą wykrzyknika i dopiero to wyrażenie (ta wartość) będzie brana pod uwagę w IF()

    _________________
    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: 5 sie 2021, o 09:10 
    Offline
    Użytkownik

    Dołączył(a): 03 lut 2016
    Posty: 126
    Pomógł: 0

    mirekk36 napisał(a):
    a zatem NAJPIERW zmienna key_lock zostanie zwiększona o JEDEN, następnie zostanie zanegowana za pomocą wykrzyknika i dopiero to wyrażenie (ta wartość) będzie brana pod uwagę w IF()

    :| Już mi się chyba cos z głową dzieje, bo w związku z powyższym rozumiem to tak: jeżeli key_lock zostaje zwiększone o JEDEN to zawsze będzie TRUE. jeżeli w kolejnym kroku zostanie zanegowane to otrzymamy FALSE. Czyli warunek nie zostanie spełniony.
    Za chwilę wyrwę sobie ostatniego włosa. Albo jestem jakiś ostatni matoł.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 sie 2021, o 11:16 
    Offline
    Moderator
    Avatar użytkownika

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

    11jacekj napisał(a):
    Za chwilę wyrwę sobie ostatniego włosa. Albo jestem jakiś ostatni matoł.

    a przestań ;) czasem się człowiek zatnie i co zrobić - ja też tak mam - szczególnie teraz gdy po raz pierwszy piszę softy do ESP ;)

    11jacekj napisał(a):
    bo w związku z powyższym rozumiem to tak: jeżeli key_lock zostaje zwiększone o JEDEN to zawsze będzie TRUE.

    Tu ci zabrakło już tylko "jednego patyczka" :lol: ... Pomyśl, key_lock będzie wciąż zwiększany o JEDEN .. i wg ciebie ZAWSZE będzie większy od zera ? ;) ... a co się stanie wg ciebie gdy już dojdzie do wartości 255 ( a PAMIĘTAJ że to zmienna 8-bitowa!) ... i zwiększy się jej wartość o JEDEN - to ILE BĘDZIE panie kochany ? no ile ?

    ;) .... TAK! w końcu będzie upragnione ZERO które po zanegowaniu da oczekiwane TRUE !!! ;)

    _________________
    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: 5 sie 2021, o 11:45 
    Offline
    Użytkownik

    Dołączył(a): 03 lut 2016
    Posty: 126
    Pomógł: 0

    No tak, to oczywiste, zdałem sobie sprawę przy analizowaniu tego programu że po 255 będzie 0. ale nie dopuszczałem do głowy że to o to chodzi, coś mnie przyblokowało i nie zrobiłem kolejnego kroku do przodu. Przepraszam. Mózg zamknąłem w Mrokach Średniowiecza, dziś zapomniałem logi i hasło do najważniejszego programu u mnie w pracy.
    Wiem że szykujesz rewelację w ESP, może nie wiele się udzielam na forum ale czytam na bieżąco :D.
    A jeszcze wtrącę pytanie o ESP. Od jakiegoś czasu chodzi za mną żeby kupić do potestowania, pobawienia się, trochę już poczytałem. Którą wersję polecił byś mi kupić, tak żeby była kompatybilna z tym co planujesz?
    Obrazek ta chyba jest najbardziej wypasiona przynajmniej w wyglądu i opisu pinów ale nie wiem czy się nadaje do czegokolwiek.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 sie 2021, o 12:11 
    Offline
    Moderator
    Avatar użytkownika

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

    11jacekj napisał(a):
    Którą wersję polecił byś mi kupić, tak żeby była kompatybilna z tym co planujesz?


    Proponuję przed zakupem poczekać na start tej akcji - bo już w pierwszym poradniku wideo będę przede wszystkim wyjaśniał cały ten mętlik z ogromną ilością i różnorakich modułów ESP - że człowiek jak ma zacząć to nie wie co wybrać i w co ręce włożyć no nie ? ;) Ja też tak miałem 2-3 miesiące temu - że aż kociej mordy dostałem :lol: .... dlatego szkoda że nie mogłem trafić nigdzie na taki poradnik wideo czy pisany - jaki ja teraz zrobię - bo MNÓSTWO ci się wyjaśni - zobaczysz - więc spokojnie czekaj - proponuję śmiało

    _________________
    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: 5 sie 2021, o 12:26 
    Offline
    Użytkownik

    Dołączył(a): 03 lut 2016
    Posty: 126
    Pomógł: 0

    To powiedz chociaż czy dasz listę komend AT z polskim opisem. I na tym kończę moje pytanie o ESP w tym temacie, bo to nie to miejsce.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 5 sie 2021, o 13:02 
    Offline
    Moderator
    Avatar użytkownika

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

    11jacekj napisał(a):
    To powiedz chociaż czy dasz listę komend AT z polskim opisem.

    No a jak może być inaczej ? ;) Do ATNEL WIFI232-T nie było w wersji PL ? Było - tak i tu będzie ! ;) .... ale to pikuś w porównaniu do opisu w PL ;) w porównaniu do tego co będzie poza tym ... na razie tylko tak mogę powiedzieć ;)

    _________________
    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: 18 sie 2021, o 22:34 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1168
    Lokalizacja: Kraków
    Pomógł: 93

    11jacekj napisał(a):
    Ja to co jest w nawiasie rozumiem jako key_lock zwiększ o JEDEN i zaneguj
    Ja się jeszcze do tego odniosę. To nie do końca jest "zwiększ o 1 i zaneguj". To jest "zwiększ o 1 i sprawdź, czy nie jest FALSE". Operator '!' nie neguje zmiennej (od negacji jest '~')



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 sie 2021, o 09:21 
    Offline
    Moderator
    Avatar użytkownika

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

    Marhef napisał(a):
    11jacekj napisał(a):
    Ja to co jest w nawiasie rozumiem jako key_lock zwiększ o JEDEN i zaneguj
    Ja się jeszcze do tego odniosę. To nie do końca jest "zwiększ o 1 i zaneguj". To jest "zwiększ o 1 i sprawdź, czy nie jest FALSE". Operator '!' nie neguje zmiennej (od negacji jest '~')


    No nie do końca tak jak piszesz ... dlaczego?

    Pomyśl sobie - warunek IF( wyrażenie ) ...

    sprawdza ZAWSZE CAŁE WYRAŻENIE, czy jest ono TRUE czy FALSE, a więc jeśli wyrażeniem jest jakieś działanie, to najpierw trzeba je zrealizować, a zatem

    1. zwiększ wartość zmiennej o JEDEN
    2. ZANEGUJ tę wartość po zwiększeniu

    3. WYNIK wyrażenia będzie wzięty pod uwagę przez IF

    Wykrzyknik to operator negacji ale LOGICZNEJ a nie bitowej, dlatego nie ważne czy w zmiennej masz liczbę 1, 4 czy 237 to po zanegowaniu przyjmie wartość FALSE, a TYLKO w jednym przypadku przyjmie wartość TRUE, gdy zmienna osiągnie wartość zero.

    _________________
    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: 24 sie 2021, o 17:19 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1168
    Lokalizacja: Kraków
    Pomógł: 93

    Masz rację, Mirku, źle to sformułowałem. Może ja źle zrozumiałem autora wątku, ale to miało być odniesienie do tego fragmentu:
    11jacekj napisał(a):
    key_kock miał wartość 1 po wciśnięciu przycisku i dodatkowo jest preinkrementowany czyli ma wartość 2 ale po zanegowaniu ma wartość 0. I z mojego myślenia wychodzi żeby warunek był spełniony to key_kock w drugim ifie musiał by mieć wartość -1 wtedy po inkrementacji i zanegowaniu miał by wartość 1. Proszę wytłumaczcie mi jak to działa bo najwyraźniej źle myślę.
    I jeszcze do wypowiedzi w jednym z kolejnych wpisów:
    11jacekj napisał(a):
    jeżeli key_lock zostaje zwiększone o JEDEN to zawsze będzie TRUE. jeżeli w kolejnym kroku zostanie zanegowane to otrzymamy FALSE. Czyli warunek nie zostanie spełniony.
    Zrozumiałem to tak, że autor (11jacekj) zrozumiał, że wynik negacji jest przypisany do zmiennej key_lock, co nie jest prawdą. Bo, tak jak piszesz, zmienna jest inkrementowana i wynik inkrementacji jest przypisany do zmiennej, natomiast negacja zmiennej key_lock nie jest przypisana do zmiennej, ten wynik jest brany pod uwagę tylko w ifie (dokładnie tak, jak wyjaśniłeś).
    Mam nadzieję, że nie namieszałem tym wpisem?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sie 2021, o 19:47 
    Offline
    Moderator
    Avatar użytkownika

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

    Cytuj:
    Mam nadzieję, że nie namieszałem tym wpisem?

    Ale dlaczego miałeś namieszać ? Po to jest forum żeby sobie podyskutować i czasem zwrócić uwagę na inne rozwiązanie czy podejście ;)

    _________________
    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  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 

    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