logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Jak napisać program Arduino do sterowania czasem przekaźnika z wyświetlaczem?

Sennei 25 Maj 2019 20:00 966 7
  • #1 17980388
    Sennei
    Poziom 5  
    Posty: 10
    Ocena: 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.
  • Pomocny post
    #2 17980769
    kaczakat
    Poziom 34  
    Posty: 1748
    Pomógł: 317
    Ocena: 231
    Ś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.
    Pomogłem? Kup mi kawę.
  • #3 17980969
    Sennei
    Poziom 5  
    Posty: 10
    Ocena: 4
    Dzięki wielkie
  • Pomocny post
    #4 17981281
    kaczakat
    Poziom 34  
    Posty: 1748
    Pomógł: 317
    Ocena: 231
    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ą).
    Pomogłem? Kup mi kawę.
  • Pomocny post
    #5 17981551
    Konto nie istnieje
    Poziom 1  
  • #6 17981693
    Sennei
    Poziom 5  
    Posty: 10
    Ocena: 4
    No więc mam taki program i jak mogę wyświetlić zmienna w terminalu i jak mogę wznowić czas timera?
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #7 17981810
    kaczakat
    Poziom 34  
    Posty: 1748
    Pomógł: 317
    Ocena: 231
    No proszę, o tym pisałem, od razu się pojawi ktoś, kto wie lepiej i poprawi.
    Zacznij od millis(), z przykładu blink:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    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.
    Pomogłem? Kup mi kawę.
  • #8 18156991
    Sennei
    Poziom 5  
    Posty: 10
    Ocena: 4
    Dziękuje zamykam

Podsumowanie tematu

✨ Użytkownik poszukuje pomocy w napisaniu programu Arduino do sterowania czasem przekaźnika z wyświetlaczem. Program ma umożliwiać włączenie przekaźnika na 1 minutę po naciśnięciu przycisku NO, z możliwością dodawania kolejnych minut oraz zatrzymywania czasu za pomocą innych przycisków. Odpowiedzi sugerują użycie funkcji millis() do zarządzania czasem oraz przesyłania danych do terminala. Użytkownicy podkreślają znaczenie poprawnego podłączenia oraz obsługi zmiennych w kodzie, a także wskazują na możliwość wykorzystania timerów sprzętowych dla większej precyzji.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA