Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino - Korekta programu. Wytłumaczenie.

TDA2593 08 Lis 2016 18:31 642 8
  • #1 08 Lis 2016 18:31
    TDA2593
    Poziom 9  

    Witam.

    Napisałem poniższy program (Miganie "pokładowej" diody LED). Proszę o wytłumaczenie dlaczego:
    * jest tylko pięć błysków, impulsów? Chciałem, aby po drugim if_ie było 10 imp.
    * co robi program po 1_szy pięciu impulsach?

    * co zrobić, aby po np: 50 błyskach LED układ/ program czekał np: 1 godzinę

    Proszę o pomoc.
    Pozdrawiam.


    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 8
  • #2 08 Lis 2016 19:07
    BlueDraco
    Specjalista - Mikrokontrolery

    Myślę, że program zachowuje się tak, jak go napisałeś, więc to Ty najlepiej odpowiesz na pytania, które zadałeś.

    0
  • #3 08 Lis 2016 19:34
    TDA2593
    Poziom 9  

    <ciach>

    Piszę post w początkujących i proszę o pomoc i co mam jeszcze zrobić... napisałem program, który nie działa tak jak chcę. Tzn. wiem jak działa do 1_szych pięciu "mignięć", czyli do końca 1_szego if_a...
    Mam sporo lat doświadczenia (i lat... :( ), ale próbuję zrozumieć/ nauczyć programowania AVR...


    Moderowany przez dondu:

    Wulgaryzmów i chamstwa nie tolerujemy - ostrzeżenie.

    3.1.9. Nie ironizuj i nie bądź złośliwy w stosunku do drugiej strony dyskusji. Uszanuj odmienne zdanie oraz inne opinie na forum.

    3.1.6. Rozpowszechnianie treści sprzecznych z zasadami współżycia społecznego oraz dobrymi obyczajami.

    1
  • Pomocny post
    #4 08 Lis 2016 21:12
    dondu
    Moderator Mikrokontrolery Projektowanie

    Po pierwsze nie edytuj postów, bo wątek traci sens.
    Po drugie zadaj konkretne i łatwe do zrozumienia pytania, bo tych nie sposób zrozumieć:

    TDA2593 napisał:
    Proszę o wytłumaczenie dlaczego:
    * jest tylko pięć błysków, impulsów? Chciałem, aby po drugim if_ie było 10 imp.
    * co robi program po 1_szy pięciu impulsach?

    * co zrobić, aby po np: 50 błyskach LED układ/ program czekał np: 1 godzinę


    Poza tym pytanie cyt. "co robi program po 1_szy pięciu impulsach?" to wiesz sam, bo obserwujesz go na swoim Arduino, a my nie. Stąd odpowiedź BlueDraco była słuszna.

    0
  • Pomocny post
    #5 08 Lis 2016 21:19
    BlueDraco
    Specjalista - Mikrokontrolery

    Przecież napisałeś program całkiem jasno: po każdych 5 mignięciach czeka 5 sekund, po każdych 10-ciu - dodatkowo jeszcze 10 sekund.

    0
  • #7 08 Lis 2016 22:21
    TDA2593
    Poziom 9  

    Tak opisałem sobie działanie w komentarzu...

    Niestety mam doświadczenie, ale w elektronice analogowej (niedopisałem tego wcześniej) i ~~weekendami próbuje cos napisać, zrozumieć... Na początku lata przeczytałem książkę Simona Monka Arduino dla Początkujących i na jej podstawie powstał mój programik.
    Od tego czasu zatraciłem trochę wyczucie w tym temacie... Z jednym if_em i jednym count_em program jest mnie dla prosty, ale tutaj sie pogubiłem...

    Nie wiem dlaczego drugi odstęp czasowy jest po 15s, a nie 10s? Wiem, że program wykonuje się po kolei, ale nie widze teraz zalezności pomiędzy tymi dwoma if_ami... nie wiem jak program pomiędzy nimi wraca w pętli do jej początku?

    Dodatkowo wstawiłem kolejny licznik {(Count3) + 3_cia pętle if}, który doliczy np: 50 i wygeneruje przerwę np: 1min. Ale moj program tego w ogóle nie widział, więc na forum wrzuciłem wersję z dwoma licznikami...
    Nie wiem, czy właśnie dodać kolejny licznik, czy dodać drugi delayPeriod2 i spróbować go co pętle dodawać, typu: delayPeriod2+10000?

    Stanąłem w tej chwili w miejscu i potrzebuje, aby Ktoś mi pomógł.

    Pozdrawiam

    0
  • Pomocny post
    #8 08 Lis 2016 22:31
    BlueDraco
    Specjalista - Mikrokontrolery

    W pierwszy if wpada po 5 mignięciach. Po wyjściu z pierwszego wpada w drugi po 10 mignięciach. Proste? Przecież tak to sam napisałeś, wystarczy przeczytać.

    0
  • Pomocny post
    #9 08 Lis 2016 22:33
    dondu
    Moderator Mikrokontrolery Projektowanie

    Dbaj o prawidłowe formatowanie kodu to będziesz więcej widział:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    count1 i count2 liczą od zera równomiernie co 1. Co drugi raz występuje więc taka sytuacja, w której oba ify są wykonywane jeden po drugim, gdyż 10/5 to liczba całkowita. W takiej sytuacji masz 15 sekund.

    Jeśli chcesz osobno liczyć opóźnienia to powinieneś użyć timera.

    0