Arduino Polska Forum
Zatrzymanie silnika - 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: Zatrzymanie silnika (/watek-zatrzymanie-silnika)



Zatrzymanie silnika - Matfa11 - 06-12-2018

Witam, 

Robię projekt na Arduino uno, który będzie sterować silnikiem. Do tego projektu zamierzam użyć dwa czujniki odległości. Mój silnik mam za zadanie otworzyć i zamknąć klape. Gdy czujnik coś wyłapie na danej odległości kapa ma się otwierać przez jakiś czas, później chwila pauzy no i po pauzie ma się zamknąć. Mój problem polega na tym, że nie wiem jak napisać kod, który zatrzyma silnik przy zamykaniu klapy wtedy, gdy czujnik odległości coś wykryje. Chciałbym, żeby to działało na takiej samej zasadzie jak brama wjazdowa. Czyli jak fotokomórka coś wykryje przy zamykaniu bramy to wtedy brama się zatrzyma i po chwili zacznie się na nowo otwierać.
 
Dodałbym ten kod tutaj, tylko nie wiem jak ;(

Z góry dziękuję za pomoc!


RE: Zatrzymanie silnika - es2 - 06-12-2018

Rozwiązań jest wiele. Najrozsądniejsze wydaje się aby czujnik wywołał przerwanie w obsłudze którego silnik zostanie zatrzymany.


RE: Zatrzymanie silnika - Matfa11 - 06-12-2018

(06-12-2018, 20:56)es2 napisał(a): Rozwiązań jest wiele. Najrozsądniejsze wydaje się aby czujnik wywołał przerwanie w obsłudze którego silnik zostanie  zatrzymany.

Tak, tylko problem w tym, że nie wiem jak ta komende wpisać 

U mnie jest coś takiego, teraz pytanie co tam dopisać?

void CZUJNIK1(){

digitalWrite(OTWIERANIE, HIGH); 
delay(czas2);
digitalWrite(OTWIERANIE, LOW); 
delay(pauza); 
digitalWrite(ZAMYKANIE, HIGH);
delay(czas1);
digitalWrite(ZAMYKANIE, LOW);

}

void CZUJNIK2(){

digitalWrite(OTWIERANIE, HIGH); 
delay(czas2);
digitalWrite(OTWIERANIE, LOW); 
delay(pauza); 
digitalWrite(ZAMYKANIE, HIGH);
delay(czas1);
digitalWrite(ZAMYKANIE, LOW);


RE: Zatrzymanie silnika - kaczakat - 06-12-2018

Tu znajdziesz informacje jak napisać program: https://forbot.pl/blog/kursy .


RE: Zatrzymanie silnika - es2 - 06-12-2018

(06-12-2018, 21:03)Matfa11 napisał(a):
(06-12-2018, 20:56)es2 napisał(a): Rozwiązań jest wiele. Najrozsądniejsze wydaje się aby czujnik wywołał przerwanie w obsłudze którego silnik zostanie  zatrzymany.

Tak, tylko problem w tym, że nie wiem jak ta komende wpisać 

U mnie jest coś takiego, teraz pytanie co tam dopisać?

void CZUJNIK1(){

digitalWrite(OTWIERANIE, HIGH); 
delay(czas2);
digitalWrite(OTWIERANIE, LOW); 
delay(pauza); 
digitalWrite(ZAMYKANIE, HIGH);
delay(czas1);
digitalWrite(ZAMYKANIE, LOW);

}

void CZUJNIK2(){

digitalWrite(OTWIERANIE, HIGH); 
delay(czas2);
digitalWrite(OTWIERANIE, LOW); 
delay(pauza); 
digitalWrite(ZAMYKANIE, HIGH);
delay(czas1);
digitalWrite(ZAMYKANIE, LOW);
Dałeś strzępki kodu więc nie da sie pomóc.
Jak dasz cały, to pewnie dostanę kołatania serca, bo obawiam się, że czas1, czas2, pauza mają setki ms lub więcej. Poczytaj o millis. Delay-em zawieszasz program nie zobaczy on zmiany stanu czujnika. Przerwania nic nie dadzą, bo co z tego, że przerwanie zatrzyma silnik, jak za chwile, po jakimś tam Delay wykona się digitalWrite(OTWIERANIE, HIGH);
Musisz:
- Zapoznać się z podstawowym kursem Arduino.
- Zapoznać się z z wielowątkowością (choćby z użyciem millis).
- Zapoznać się z przerwaniami zewnętrznymi.
Na szczęście nie musisz zapoznać się z RTOS-em.