• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sterowanie silnikiem DC - 2 przyciski
#1
Witam.

Potrzebuję wysterować silnik DC - obroty prawo, lewo za pomocą dwóch przycisków.
Program powinien działać w następujący sposób:
Po wciśnięciu przycisku A i jego ciągłym trzymaniu silnik powinien się kręcić np. w prawo.
Jeśli zwolnimy przycisk, silnik powinien się zatrzymać.
Analogicznie obroty lewe, po wciśnięciu przycisku B i jego przytrzymaniu silnik pracuje w lewo po zwolnieniu przycisku, zatrzymuje się.
Kolejna funkcja przycisków - jeżeli przycisk wciśnięty i silnik pracuje, dwukrotne szybkie wciśnięcie tego przycisku powinno powodować zwiększenie obrotów o pewien poziom. (w programie są 4 poziomy prędkości działające w pętli).
Proszę o podpowiedzi o możliwości rozwiązania programowego takiej podwójnej funkcji przycisków.
Chodzi o to aby w momencie zwolnienia przycisku (gdy chcemy kliknąć dwukrotnie aby przyspieszyć) silnik nie zwalniał (nie reagował od razu po zwolnieniu przycisku),
jednocześnie aby nie było zbyt dużych opóźnień jeżeli puszczamy przycisk aby zatrzymać silnik.(tu ważne aby jak najszybciej się zatrzymał).
Mam nadzieję, że jasno napisałem o co mi chodzi a może źle kombinuję i w jakiś inny prosty sposób można takie sterowanie uzyskać.
Ogólnie funkcja włączania, przyspieszania i zatrzymywania silnika (prawo , lewo) powinna być zrealizowana za pomocą dwóch przycisków (nie ma opcji zwalniania). 
Z góry dzięki za podpowiedzi.
Pozdrawiam.
 
Odpowiedź
#2
Możesz wciskać przyciski w tempie 50-100ms, można sprawdzać stan przycisku co 200ms i albo zatrzymywać, albo kontynuować prace silnika, ale to nie będzie pewne działanie, z jednej strony trzeba zrobić z 200ms, a z drugiej czas nie może być za krótki ze względu na drgania styków.
Taka podwójna funkcja musi wydłużyć czas reakcji.
Co to w ogóle dla Ciebie oznacza szybko czy natychmiast, uC może na pierwsze wciśnięcie zareagować w us, ale to co się dzieje dalej z przyciskiem i ile będą trwały drgania styku po pierwszym wciśnięciu zależy od konkretnego sprzętu, musisz sobie wykonać testy na tym co tam masz w szufladzie, potem dodać margines błędu i sprawdzić na ile jest to powtarzalne.
Na początek napisz sobie program do obsługi 1 przycisku, albo użyj biblioteki do buttons, niektóre obsługują krótkie/długie wciśnięcia oraz double/triple click, np. oneButton pomierz czasy i wydrukuj na Serial.
Na pewno dużo prościej byłoby dodać trzeci przycisk z funkcją kliknięcie zwiększa x2, przytrzymanie zwalnia /2.
 
Odpowiedź
#3
Witam,
zrobiłem 300ms i działa całkiem dobrze, opóźnienie nie jest mocno odczuwalne - jest akceptowalne.
Dzięki za podpowiedź z bibliotekami.
Pozdrawiam.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości