• 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
Obrotnica - pomoc laikowi
#1
Question 
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
 
Odpowiedź
#2
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;
}
 
Odpowiedź
#3
Jeśli zatrzymań w ciągu jednego obrotu będzie kilka to proponuję zastosować silnik krokowy.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#4
"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
 
Odpowiedź
#5
(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.
 
Odpowiedź
#6
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..
 
Odpowiedź
#7
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
 
Odpowiedź
#8
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.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości