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 17:16


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 24 paź 2014, o 23:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 08 lut 2014
    Posty: 123
    Lokalizacja: Świętokrzyskie
    Pomógł: 0

    Witam

    Napisałem kiedyś mały programik służący do załączania i wyłączania led za pomocą jednego przycisku z opóźnieniem, ale zrobiłem to używając "waitms". Chodziło mi o to aby led nie zaświecała się odrazu po naciśnięciu przycisku,tylko trzeba było go chwilę przytrzymać i dopiero się led zaświeciła. I to samo przy zgaszeniu led.

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


    Chciałbym to zrobić teraz bez użycia waitms, ale za to z użyciem timera0 do odmierzenia czasu, ale coś mi nie wychodzi i nie odmierza czasu. Po naciśnięciu przycisku program miałby przeskoczyć do procedury odmierzającej czas, np. 3s, powrócić do pętli głównej, sprawdzić czy nadal przycisk wciśnięty i zaświecić led. To samo na odwrót.

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


    Pomożecie mi to jakoś poprawić?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 paź 2014, o 00:57 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 08 lut 2014
    Posty: 123
    Lokalizacja: Świętokrzyskie
    Pomógł: 0

    Nie rozumiem tego.

    Jak puszczony przycisk to nie będzie inkrementowana zmienna word.
    Jak przycisk wciśnięty to ma się inkrementować, a jak nie to nie.

    Ja zrobiłem to jeszcze tak jak ja to rozumuję a jak już wiesz ze mnie programista żaden, ale działa.
    Ile czasu trzeba trzymać wciśnięty to tylko mógłbym zmierzyć stoperem, bo tego przeliczania też nie rozumiem, mimo że Panowie Górecki i Wiązania tłumaczyli to w swoich książkach.
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    A tak zrozumiałem to co mi napisałeś, ale nie wiem czy dobrze.
    Jeśli możesz to wytłumacz mi z tym timerem jak to się przelicza i o co w tym chodzi bo z tych książek nic nie rozumiem, a niby napisane dla początkujących. Teraz muszę bardzo długo trzymać przycisk żeby się zaświeciła led.

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



    Ostatnio edytowano 25 paź 2014, o 01:17 przez michał6201, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 paź 2014, o 01:35 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 08 lut 2014
    Posty: 123
    Lokalizacja: Świętokrzyskie
    Pomógł: 0

    Dziękuję Ci za kod.
    Zmniejszyłem wartość zmiennej z 1000 do 125 żeby szybciej zmieniał się stan led, ale działa po puszczeniu przycisku, czyli nie wiemy kiedy doliczył do 125, póki nie puścimy przycisku. Można to jakoś odwrócić?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 paź 2014, o 01:49 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 08 lut 2014
    Posty: 123
    Lokalizacja: Świętokrzyskie
    Pomógł: 0

    Teraz działa super.
    A czemu dałeś wszystko do podprogramu obsługi przerwania? Dlaczego tak się robi?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 paź 2014, o 16:14 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Pozwólcie moi drodzy, że się wtrącę w wątek...
    Kolego @Niveasoft, a co się stanie kiedy w Twoim programie po 2s nadal będę trzymał przycisk? :mrgreen:

    No dobra, żeby nie być tylko krytykiem to wrzucam moją wersję tego problemu i nieco zmieniłem Twój kod.
    Przede wszystkim oczyściłem przerwania, bo dobrym nawykiem jest aby od początku robić tam porządek i umieszczać tylko niezbędne rzeczy (o czym zresztą sam wspominałeś). Dodałem za to timer programowy. Zmieniłem nieco interwał przerwań - teraz jest 10ms co łatwiej się liczy. Program jest oczywiście nieblokujący czyli nie zatrzymuje pętli głównej na czas swojego wykonywania. Pozmieniałem też kolejność instrukcji - tu również dobrym nawykiem jest aby włączać przerwania jak już wszystko się skonfiguruje i poustawia, bo o ile w tak prostym programie zgrzytu nie będzie o tyle w czymś bardziej skomplikowanym może być niezły zonk nawet ze zjaraniem peryferiów dołączonych do procka włącznie(!)...

    @michał6201 przeanalizuj dokładnie moją wersję programu, a zobaczysz jakie cuda można wyprawiać z badaniem przycisku w ten sposób napisanym ;) O tym, że wyszło przy okazji gotowe debounce (nawiasem mówiąc tu niepotrzebne, ale przy dalszej rozbudowie niezbędne) nawet już nie wspominam... 8-)

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


    Autor postu otrzymał pochwałę

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 paź 2014, o 13:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 08 lut 2014
    Posty: 123
    Lokalizacja: Świętokrzyskie
    Pomógł: 0

    Dziękuję Wam za pomoc:)
    Będę bawił się dalej.
    MKavrCalculator mam także potrenuję też obliczanie parametrów do timerów.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 paź 2014, o 13:13 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 cze 2013
    Posty: 988
    Lokalizacja: Byram, MS 39272
    Pomógł: 55

    Do obliczania parametrów Timer'a polecam także te stronę
    http://impuls.elektroda.eu/joomla/index ... kalkulator

    _________________
    Pomysły na podpis - wyślij SMSa +1 769 243 0011



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

    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