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 27 lip 2025, o 14:15


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
    Autor Wiadomość
    PostNapisane: 16 sty 2015, o 12:00 
    Offline
    Użytkownik

    Dołączył(a): 12 lis 2014
    Posty: 76
    Pomógł: 0

    witam,

    bardzo proszę o wsparcie w kwestii możliwości zatrzymania programu w funkcji void setup do czasu wybrania odpowiedniej opcji,
    tak aby program nie przechodził samoczynnie do void loop

    w moim programie mam proste menu, jest ono umieszczone w void loop, w jednej z fukcji tego meu jest ustawianie wartości zmiennej M,
    poprzez klikanie dodaję do niej wartość +1 i kiedy przekracza zakres jaki mnie interesuje zapętlam odczyt i resetuję znowu do
    minimalnej wartości zakresu jaki akceptuję - to działa

    kolejną funkcją w tym menu jest zapisanie tej ustawionej przeze mnie wartości do pamięci EEPROM,
    potem przy restarcie arduino, program czyta wartość zapisaną w pamięci EEPROM i ustawia od nowa moją wartość M,

    chciałbym abym mógł ustawiać tą wartość M już w funkcji void setup i żeby program czekał do momentu aż zdecyduję czy
    ją będę ustawiał, czy też użyję "skip" i przejdę dajej do void loop,
    proste menu w funkcji void setup mogę zrobić na switch/case ale ono zamiast czekać na mój odczyt, przechodzi od razu do
    void loop

    jest na to jakiś sposób aby zatrzymać program w miejscu void setup, tam coś ustawić i dopiero przejść do void loop?
    pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 12:02 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    może po prostu użyj do tego flagi.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 12:03 
    Offline
    Użytkownik

    Dołączył(a): 12 lis 2014
    Posty: 76
    Pomógł: 0

    nie wiem o co chodzi z flagami,
    wciąż szukam ale nie znalazłem jeszcze odpowiedzi,

    ktoś ma jakiś inny pomysł?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 14:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    Flaga to inaczej zmienna która przyjmuje stan 0 , 1 czasami i więcej

    czyli jeżeli wchodzisz do menu ustawiasz 1 a te 1 będzie oznaczało że nie ma przeskakiwać do void loop

    Posłuż się zmienną jak zwykłą flagą nie mniej aby ktoś mógł coś więcej pomóc to pokaż schemat i kod.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 14:23 
    Offline
    Użytkownik

    Dołączył(a): 12 lis 2014
    Posty: 76
    Pomógł: 0

    a tak wygląda testowy 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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 14:58 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    Wydaje mi się że najprościej uzyć goto
    generalnie unikam jak mogę
    switch
    i go to

    wolę oprzeć to na fladze i mam większą kontrolę ...

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 15:03 
    Offline
    Użytkownik

    Dołączył(a): 12 lis 2014
    Posty: 76
    Pomógł: 0

    dzięki za info, nie umiem się jeszcze posługiwać flagami,
    będę szukał dalej



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 15:10 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    bigplik napisał(a):
    dzięki za info, nie umiem się jeszcze posługiwać flagami,
    będę szukał dalej


    Kolego ależ to proste.

    deklarujesz sobie np:

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


    później w pętli głównej wykonujesz sobie sprawdzenie ...

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


    i np przyciskami czy innym zdarzeniem wywołujesz sobie:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    lub

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


    To takie najprostsze wykorzystanie flagi.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 15:51 
    Offline
    Użytkownik

    Dołączył(a): 12 lis 2014
    Posty: 76
    Pomógł: 0

    Wielkie Dzięki za wytłumaczenie, faktycznie wygląda na proste ;)

    Rozumiem, że Kiedy umieszczę te flagi w void setup to program nie wejdzie samodzielnie do void loop?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 sty 2015, o 16:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    Jeżeli je odpowiednio umieścisz to program samodzielnie nie powinien wejść w void loop ... a za pomocą przycisku w odpowiednim momencie możesz zmienić flagę i program poleci do void loop

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 sty 2015, o 02:49 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 wrz 2014
    Posty: 1530
    Lokalizacja: Warszawa
    Pomógł: 55

    Obejrzyj serię poradników Mirka o wężu:

    http://mirekk36.blogspot.com/2012/12/ws ... a-bez.html

    Zobaczysz, że pomysł zatrzymywania programu jest nie za dobry, tak się nie programuje mikroprocków. Po obejrzeniu zrobisz to zupełnie inaczej - poprzez event w pętli głównej. Bedziesz mógł zmienić wartość M w menu w dowolnym momencie, i ją zapisywać w epromie dowoli.

    _________________
    --... ...-- - --- -- . -.-



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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