Arduino Polska Forum
Obrotnica - pomoc laikowi - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Obrotnica - pomoc laikowi (/watek-obrotnica-pomoc-laikowi)



Obrotnica - pomoc laikowi - goldendragon4444 - 21-05-2017

Witam. Jestem świeżym posiadaczem Arduino Uno. Bawiłem się nieco tym cudeńkem i stworzyłem kilka prostych projektów. Od jakiegoś czasu próbuję stworzyć projekt obrotnicy lecz utkwiłem na za pewne prostym (dla wielu doświadczonych ludzi z tego forum) problemie.
Już tłumaczę o co mi chodzi:
Projekt ma się składać  np z małego silnika 12 V który będzie napędzał oś "talerza". Silnik będzie uruchamiany poprzez przycisk "start". Na "talerzu" co kąt 10 stopni czujka zbliżeniowa będzie wykrywała przeszkodę i nastąpi zatrzymanie pracy silnika na 3 sekundy po czym silnik automatycznie wznowi pracę. Po wykonaniu pełnego obrotu talerza (360 stopni) nastąpi zatrzymanie programu aż do ponownego uruchomienia poprzez przycisk "start". 


Problem polega na tym, że nie wiem jak napisać program aby po wykryciu sygnału z czujki silnik zatrzymał się na te 3 sekundy po czym wznowił pracę do momętu kolejnego wykrycia sygnału z czujki.
Podejrzewam, że należy tu zastosować tzw. "przerwanie" ale moje próby spełzły na niczym. Nie będę narazie wstawiał kodu bo nie trzyma on się "kupy" w tym momęcie. Gdy będę wiedział jak zastosować to przerwanie na pewno wstawię tutaj mój kod.


Proszę o pomoc - wystarczy mi prosty przykład z kodem który będzie się odnosił do mojego problemu.

Z góry dziękuję Smile


RE: Obrotnica - pomoc laikowi - krn78 - 22-05-2017

Napiszę w pseudo kodzie, bo nie podałeś żadnych szczegółów (gdzie silnik, gdzie i jaki czujnik).
Może tak:
Kod:
if(czujka){
silnik_stop;
delay(3000);
silnik_start;
}



RE: Obrotnica - pomoc laikowi - namok - 22-05-2017

Jeśli zatrzymań w ciągu jednego obrotu będzie kilka to proponuję zastosować silnik krokowy.


RE: Obrotnica - pomoc laikowi - goldendragon4444 - 22-05-2017

"silnik_stop", "silnik_start"?  - tyle czytałem na forach itp a nigdzie nie zauważyłem opcji stop i start..
Heh, nie myślałem że to będzie aż tak proste.. ;p
Jutro to sprawdzę bo dziś płytkę pożyczyłem kumplowi. Wink


RE: Obrotnica - pomoc laikowi - krn78 - 23-05-2017

(22-05-2017, 23:00)goldendragon4444 napisał(a): "silnik_stop", "silnik_start"?  - tyle czytałem na forach itp a nigdzie nie zauważyłem opcji stop i start..
Heh, nie myślałem że to będzie aż tak proste.. ;p
Jak napisałem, piszę w pseudokodzie Wink Zwracaj uwagę raczej na składnię, niż na zastosowane polecenia. Zamiast 'silnik_stop' i 'silnik_start' musisz wpisać własne, działające u Ciebie instrukcje uruchamiające i zatrzymujące silnik. Nikt Ci, zresztą, nie zabroni napisać własnych funkcji o takich właśnie nazwach.


RE: Obrotnica - pomoc laikowi - goldendragon4444 - 23-05-2017

Jestem zielony jeśli chodzi o arduino :Smile
Właśnie chodzi o to, że ja nie potrafię uruchomić silnika po wykryciu sygnału przez czujkę. 

Logicznie to powinno wyglądać tak:

Silnik zaczyna pracę po wcisnieciu "START", pracuje do mometu gdy czujka wykryje sygnał. Po wykryciu sygnału przez czujkę silnik zatrzymuje się na 3 sekundy po czym wznawia pracę.

Jak w głównej pętli robiłem np: (nie zwracajcie uwagi, że brakuje znaków - to tylko przykład, ogólny zarys)

if (czujka) == HIGH
digitalWrite(silnik) LOW

nie wiem jaki dalej dać kod, żeby silnik wstawał po tych 3 sekundach..


RE: Obrotnica - pomoc laikowi - ryro.glw - 23-05-2017

wklej kod, nawet jesli jest zly bo tlumaczysz ale ciagle nie wiadomo jaka instrukcja wlacza ten silnik, czy jest to cos typu digitalWrite(silnik, HIGH); ????

to digitalWrite(silnik, HIGH); to jest Twoje silnik_start i analogicznie zatrzymanie slinika, ale ciezko Ci pomoc bez jakiegokolwiek kodu, wklej co wgrales na plytke to bedzie latwiej cos pomoc

Wysłane z mojego ALE-L21 przy użyciu Tapatalka


RE: Obrotnica - pomoc laikowi - krn78 - 25-05-2017

Podaj kod i schemat (narysowany np. we Fritzing (do pobrania za free) lub na stronie circuits.io, przy czym w tym drugim miejscu będziesz go mógł sam zasymulować). Zobaczymy, co jest grane.