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

sterowanie przekaźnikiem arduino

11 Lip 2015 20:37 1176 9
  • Poziom 10  
    Witam mam mały problem w bardzo prostym kodzie który przedstawiam poniżej.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Program działa dobrze, ale trzeba go zmodyfikować. Potrzebna jest pauza, bo teraz po starcie programu od razu program startuje. Ustawia się do pozycji wyjściowej, i w tej pozycji powinien zostać zatrzymany zanim funkcja lup, pętla w niej zacznie działać w kółko. Jednym słowem po wciśnięciu przycisku dopiero ma zacząć pracować w pętli, ponadto ponowne wciśnięcie pauzy ma zatrzymać silnik w punkcie bazowym. Ma ktoś jakiś pomysł jak to zrobić ? Myślałem nad dodaniem kolejnego przycisku pauzującego, tylko jak go zapisać. Musi być w pętli loop ma uruchomić się przy starcie automatycznie przed pętlą. Oraz po wciśnięciu na życzenie przycisku, po skończeniu cyklu musi ustawić się w pozycji bazowej. I to mi komplikuje rozwiązanie, ta funkcja na życzenie.
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • Poziom 12  
    zrób tak że masz pętle nieskończoną która steruje silnikiem przy okazji sprawdza czy nie jest wciśnięty przycisk pauza jeśli tak to użyj polecenia broke;
  • Relpol przekaźniki nadzorczeRelpol przekaźniki nadzorcze
  • Poziom 10  
    a mógłbyś uzupełnić ten kod, albo podać przykład, nie znam tej funkcji jeszcze, ciągle się uczę. Ale tej funkcji nie poznałem, albo czy mógłbyś podać odnośnik to poczytam o tym.
  • Poziom 12  
    Robisz tak:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Jednak prze delay(); w pętli będziesz musiał trzymać przycisk tak długo aż pętla zakończy działanie, gdybyś pisał w czystym c, to było by łatwiej bo można byłoby to zrobić na przerwaniach.
  • Poziom 10  
    Wiem jakie są wady delay, ale mi chodzi o zapętlenie, tzn w segmentach. Chciałem na początku napisać kod bez delay, ale w C++ nie jest to takie łatwe dla mnie. Próbowałem ćwiczyć ale mało jest instrukcji objaśniających jak to zrobić. Nikt za bardzo mi nie chce tego objaśnić. na youtubie nikt nie rozbudowuje kodów, aby zobaczyć w praktyce móc się nimi pobawić. Przykładowo znalazłem objaśnienie działania kodu " funkcji millis". Kilka filmów objaśnia ten kod, lecz nikt nie pokwapił się aby go rozbudować, aby zmodyfikować. Napisałem kod z z "funkcją millis" w pętli "for", lecz co jedynie mogę zmienić częstotliwość błysków fleszy, po dodaniu przycisku, przycisk nie działał. Więc pomyślałem jak to inaczej rozwiązać. I podzieliłem działanie silników zupełnie inaczej. Na początku silnik ma bazować cały stół, ponieważ nie znana jest jego pozycja. Po powrocie stołu do bazy, ma nastąpić PAUZA po to aby w tym momencie można było wykonać czynność podnoszenia na określoną wysokość stołu. Po czym ma być zwolnienie pauzy i stół ma pracować tak jak jest pętla w cyklu. I na życzenie, po wciśnięciu przycisku stół może wykonać cykl lecz po powrocie do bazy ma się zatrzymać. I później cykle dookoła tak ma się powtarzać. Można wprowadzić więc przycisk dający stały sygnał po wciśnięciu, aż pętla się zakończy i przy starcie od nowa po prostu zatrzyma się stół. Zobaczę jak teraz będzie działał ten kod :), tak właśnie zastanawiałem się, że tak to ma wyglądać, dzięki za pomoc :)

    PS: język C jest łatwiejszy od C++ ? jeśli chodzi o zapisanie programu bez delay ? Mógłby ktoś pokazać prosty programik z dwoma diodami, jedna stale migająca a druga zapalająca się podczas wciśnięciu przycisku powiedzmy na dwie sekundy ? Dla porównania zawiłości byłbym wdzięczny.

    Dodano po 5 [godziny] 36 [minuty]:

    Nie dobrze, ta funkcja pauzuje mi cały void loop bez nawet wciśnięcia przycisku pauzy :|
  • Poziom 10  
    Poprzedni temat zamknięty został, a po wgraniu poprawki. Nie chce mi się pauzować silnik, tzn. pauzuje bez naciśnięcia przycisku więc nie działa

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Moderowany przez Dzimi:

    Tematy scaliłem

  • Poziom 12  
    Język C (dla avr) nie jest trudny, ale nie nauczysz się go w jeden wieczór przykładowy kod migający 8 diodami zapalają się 4 gasną zapalają się 4 następne.
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Co do arduino możesz zrobić jeszcze tak że zamiast break; użyjesz funkcji goto;
  • Poziom 12  
    Poprzedni temat nie jest zamknięty.

    Dodano po 4 [minuty]:

    Spróbuj tak:
    [code
    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 10  
    Może to przez łącze nie mogłem odpowiedzieć ?!?

    Jeśli chodzi o poprawkę to nic nie pomogło :|
  • Moderator Mikrokontrolery Projektowanie
    SamiJa napisał:
    PS: język C jest łatwiejszy od C++ ? jeśli chodzi o zapisanie programu bez delay ? Mógłby ktoś pokazać prosty programik z dwoma diodami, jedna stale migająca a druga zapalająca się podczas wciśnięciu przycisku powiedzmy na dwie sekundy ?

    Tu nie chodzi o język, tylko o poznanie mikrokontrolera i jego dokumentacji.
    Przykłady? proszę bardzo: http://mikrokontrolery.blogspot.com/2011/03/drzaskowy-pamietnik-wstep.html

    Zaglądnij także do spisu treści tej strony.