Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] Program Arduino prosty wyświetlacz i przekaźniki

Sennei 25 May 2019 20:00 516 7
IGE-XAO
  • #1
    Sennei
    Level 4  
    Witam, jestem początkujący i proszę o pomoc, problem polega na tym że potrzebuje napisać program lecz za bardzo nie wiem jak czy ktoś pomoże mi go napisać, program polegałby na tym że wcisnę przycisk 1 który jest NO monostabilny po czym załączy mi przekaźnik na 1 minutę i ten czas opóźnienia pokaże mi na wyświetlaczu oraz gdy w takcie tego opóźnienia wcisnę jeszcze raz przycisk 1 doda mi kolejna minute do tego upłyniętego czasu wcześniejszego, następnie gdy wcisnę przycisk 2 NO to zastopuje czas i wyłączy przekaźnik po czym jak wcisnę przycisk 3 zresetuje czas do 0 i wyłączy przekaźnik albo wcisnę przycisk 1 kontynuuje czas i włączy przekaźnik.
  • IGE-XAO
  • Helpful post
    #2
    kaczakat
    Level 33  
    Ściągnij sobie Arduino IDE, otwórz w jednej części ekranu, w drugiej otwórz kurs Arduino i próbuj, kursy są po polsku na blogach, wystarczy w google wpisać i jak nie jesteś botem to znajdziesz.
    Jak już zaczniesz ogarniać co do czego to wystarczy mieć zmienną i ją zwiększać przyciskiem, a zmniejszać co sekundę, ewentualnie blokować zmianę gdy zmienna powiązana z przyciskiem 2 zostanie ustawiona na 1.
  • IGE-XAO
  • #3
    Sennei
    Level 4  
    Dzięki wielkie
  • Helpful post
    #4
    kaczakat
    Level 33  
    Pokaż swoje próby, schemat podłączenia. Na początek wystarczy obsługa millis(), timery sprzętowe można zostawić na coś wymagającego dużej precyzji, odliczenie 60s nie musi być wyliczane z dokładnością pojedynczych cykli zegara uC. Pisanie na prive to kiepski pomysł, jeśli moje rozumowanie jest błędne tutaj od razu ktoś to poprawi (z dużą satysfakcją).
  • Helpful post
    #5
    emarcus
    Level 38  
    kaczakat wrote:
    Pokaż swoje próby, schemat podłączenia. Na początek wystarczy obsługa millis(), timery sprzętowe można zostawić na coś wymagającego dużej precyzji, odliczenie 60s nie musi być wyliczane z dokładnością pojedynczych cykli zegara uC. Pisanie na prive to kiepski pomysł, jeśli moje rozumowanie jest błędne tutaj od razu ktoś to poprawi .


    Akurat w Arduino funkcja ‘millis()’ wykorzystuje timer sprzętowy (Timer0) i to z wysoką precyzją (pośrednio, pomiar czasu jest w zasadzie z dokładnością do pojedynczych cykli zegara), lecz sposób jej stosowania (=>) jest już mniej precyzyjny . Jeżeli większy to o ile?

    e marcus
  • #6
    Sennei
    Level 4  
    No więc mam taki program i jak mogę wyświetlić zmienna w terminalu i jak mogę wznowić czas timera?
    Code: C
    Log in, to see the code
  • Helpful post
    #7
    kaczakat
    Level 33  
    No proszę, o tym pisałem, od razu się pojawi ktoś, kto wie lepiej i poprawi.
    Zacznij od millis(), z przykładu blink:
    Code: c
    Log in, to see the code

    Możesz sobie zrobić odliczanie np. co 10ms i na początek wysyłać to na UART (ustaw na 115200). Gdy wciśniesz przycisk ustawiasz zmienna+=(10*100*60) i masz swoje 60s.
    I teraz ta niedokładność millis(), za każdym razem gdy warunek powinien się spełnić, a akurat trawa jakaś inna funkcja z loop zgubisz parę us, przy porównaniu do 1000UL szybko tego nie zauważysz, ale przy 10UL i wydrukach na UART czy jakiś ekranik to może być dość duży rozjazd z rzeczywistością. Wszystko co ma się wykonywać w tempie 10ms wrzucasz do tego bloku powyżej, reszta w loop.
    Jeśli to ma zliczać 60s to lepiej mieć tu oczywiście 1000UL i zmienną traktować jak liczbę sekund.
  • #8
    Sennei
    Level 4  
    Dziękuje zamykam