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 cze 2025, o 06:48


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
    Autor Wiadomość
    PostNapisane: 8 sie 2021, o 13:30 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Hej, bawię się teraz odbiorem danych, wrzuciłem funkcje odbierania pojedynczego znaku i za pomocą prostych instrukcji np: steruje stanem na pinach. Pomyślałem, że jak wcisne 1 to mam zgasić diode(bo domyslnie po wystartowaniu świeci) a jak wcisnę 2 to ma migać za pomocą operacji XOR. Problem teraz jest taki, że gdy właśnie ona miga cały czas, to program juz nie reaguje na inne dane. Widać, że konwenter pracuje, dane dopływają, jednak instrukcje się nie wykonują. Próbowałem coś zrobić za pomocą polecenia break; ale lipa. Juz probowalem kilka wariantów, ale ciągle utykam w pętli. Ktoś poradzi co robię źle ? Dodam, że działanie tego programu po prostu sobie sam wymyśliłem,ale nie sadziłem, że stworzy to taki problem dla mnie

    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: 8 sie 2021, o 15:22 
    Offline
    Użytkownik

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

    A jak ma wyjść z pętli skoro nie pobierasz nowych danych z UART? Cały czas w zmiennej "dane" masz '2' i warunek jest cały czas spełniony.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sie 2021, o 16:34 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Nie wiem jak do tego podejść, tak się zakręciłem, że już sam nie wiem. Nawet nie wiem czy ta konstrukcja i pętla w pętli jest potrzebna. Wywołałem w środku tej pętli funkcje USART_Receive(); to przestało działać tak jak powinno. Chyba jeszcze nie ten etap na ogarnięcie tego

    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.


    Ten kod działa tak ok, tylko zeby migać diodą to muszę cały czas trzymać '3'. Żeby ona ciągle migała to musze to jakoś zapętlić i tu sie wszystko zaczyna :/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sie 2021, o 20:09 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Zrobiłem tak, ale nadal mam efekt taki, że gdy wcisnę raz tylko '2' to dioda sie np: tylko zaświeci lub zgaśnie, nie miga. Żeby migała trzeba trzymać klawisz 2.

    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: 8 sie 2021, o 20:30 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    Naciskasz przycisk 2, puszczasz, wysyla ci znak, trafia do zmiennej data i miga dioda. Nastepnie masz drogi przebieg petli i co wpada do data? Przycisk masz puszczony wiec nie wpadnie tam kolejna 2



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sie 2021, o 20:39 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Tak, jest to logiczne, po prostu kombinuje jakoś, żeby ten stan migania diodą został, póki nie nadejdzie zmiana.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sie 2021, o 20:52 
    Offline
    Użytkownik

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

    krawi92 napisał(a):
    Wywołałem w środku tej pętli funkcje USART_Receive(); to przestało działać tak jak powinno.

    No tak, funkcja USART_Receive() jest blokująca, więc jeśli nic nie wysyłałeś to dioda nie migała bo program czekał na jakieś znaki. Myślę, że na razie poprzestań na włączaniu wyłączaniu diody przez UART. Jak już nauczysz się korzystania z przerwań w USART to wszystko stanie się prostsze. Teraz te Twoje kombinacje sterowaniem mruganiem diodą, nawet w celach edukacyjnych, są bez sensu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sie 2021, o 20:54 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    Odbierz ja do innej zmiennej i jezeli jest rowna 1 lub rowna 2 to wdedy ja przepisz do data



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 sie 2021, o 21:00 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2021
    Posty: 93
    Pomógł: 0

    Nie no racja, od wczoraj główkuje i nic nie mogę wymyśleć, jeszcze zbyt mało wiedzy.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 sie 2021, o 10:58 
    Offline
    Użytkownik

    Dołączył(a): 01 mar 2021
    Posty: 28
    Pomógł: 2

    Stwórz jeszcze jedną zmienną, którą dobierzesz dane np. dat_act (dat_act=USART_receive() ) i sprawdź w warunku czy ma ona wartości z zakresu 1,2,3, jeśli tak to przepisz ja do zmiennej data.
    If(dat_act==1 || dat_act==2 || dat_act==3) data=dat_act. I powinno być..



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Majestic-12 [Bot] i 5 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