Arduino Polska Forum
Problem z programem do wlaczania bramy - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino)
+--- Wątek: Problem z programem do wlaczania bramy (/watek-problem-z-programem-do-wlaczania-bramy)



Problem z programem do wlaczania bramy - nikodemsz - 15-07-2017

Witam, zabawe z arduino zacząłem od niedawna i srednio idzie mi programowanie w języku C.
Wymysliłem sobie, że zrobie model bramyna arduino.
przycisk S1 i S2 to będą przyciski S1-w lewo, S2-w prawo
do tego czyjnik (przycisk na modelu) gdy brama sie zamknie C1 i drugi czujnik na drugim koncu bramy gdy brama sie otworzy C2, do tego dwie diody imitujące w którą strone będzie się okręcał silnik K1-silnik bedzie sie krecil w lewo(brama bedzie zamykana)  i K2(silnik bedzie otwierał brame)
Więc działanie miało byc takie. Naciskam przycisk w LEWO(S1) i brama się zamyka, naciskam S2 i brama się otwiera, jesli ktos wejdzie na kurs kolizyjny, brama staje i wtedy moge sobie zarządzic czy chce ją zamknąć czy otworzyć. Fajnie byłoby tez gdyby szlo zrobic tak ze gdy sie OTWIERA/ZAMYKA to moge od razu zmienic na ZAMYKANIE/OTWIERANIE sie bramy bez czekania az dojedzie do konca i czujnk zadziała
Tutaj przedstawiam mój marny sketch.... Smile
chciałem też dodac czujnik w razie gddyby ktoś  stanął na kursie kolizyjnym z bramą stad czujnik C3 i lampe ktora migałaby podczas zamykania i otwierania, stad SYGNALIZATOR.
Kod:
int c1 = 12;
int c2 = 11;
int c3 = 10;
int s1 =9;
int s2 = 8;
int k1 = 7;
int k2 = 6;
int sygnalizator = 5;

void setup () {
  pinMode(k1, OUTPUT);
  pinMode(k2, OUTPUT);
  pinMode(sygnalizator, OUTPUT);
  pinMode(c1, INPUT_PULLUP);
  pinMode(c2, INPUT_PULLUP);
  pinMode(c3, INPUT_PULLUP);
  pinMode(s1, INPUT_PULLUP);
  pinMode(s2, INPUT_PULLUP);
}

void loop() {


  if  (digitalRead(c1^s2) == LOW)//jesli c1 i s2 beda zwarte to
   { digitalWrite(k2, HIGH); //k2 czyli silnik w prawo sie zalaczy
   while (digitalRead(c2) == HIGH)//bedzie tak dlugo pracowal az
   { 
   digitalWrite(k2, LOW); //na czujniku c2 pojawi sie sygnal 
   }
   }   else if (digitalRead(c2^s1) == LOW) //tutaj podobnie co wyzej
   { digitalWrite(k1, HIGH);
   while (digitalRead(c1) == HIGH) {
   digitalWrite(k1, HIGH);
   }
   }
}
Mam nadzieje ze pomożecie.


RE: Problem z programem do wlaczania bramy - stasiekx - 10-11-2017

Do sterowania bramą wystarczy jeden przycisk (OTWÓRZ/STOP/ZAMKNIJ). Co w przypadku gdy brama sie otwiera a naciśniesz zamknij, szarpnie silnikiem w przeciwnym kierunku. Niektóre siłowniki może połamać.
Jeżeli chcesz na dwa przyciski, to w przypadku gdy jest praca bramy naciśnięcie dowlonego powinną ją zatrzymać, a ponowne naciśnięcie dopiero wywołać ruch.


RE: Problem z programem do wlaczania bramy - adix - 10-11-2017

to w przypadku gdy jest praca bramy naciśnięcie dowolnego powiną ją zatrzymać, a ponowne naciśnięcie dopiero wywołać ruch.
Nie prawda można zastosować tak zwana zmianę kierunku bezkolizyjna mianowicie, gry brama się otwiera i klikamy zamknij wtedy brama powoli się zatrzymuje i rusza w kierunku zamknij pod dobnie w druga stronę.


RE: Problem z programem do wlaczania bramy - krn78 - 13-11-2017

(10-11-2017, 23:53)adix napisał(a): można zastosować tak zwana zmianę kierunku bezkolizyjna mianowicie, gry brama się otwiera i klikamy zamknij wtedy brama powoli się zatrzymuje i rusza w kierunku zamknij pod dobnie w druga stronę.
Ciekawe rozwiązanie Smile Nigdy nie rozważałem tego w taki sposób, ale rzeczywiście to dobry pomysł. To zależy jednak, czego chciałby autor, bo może ważniejsza dla niego jest możliwość zatrzymania bramy w dowolnym momencie.


RE: Problem z programem do wlaczania bramy - adix - 13-11-2017

Zatrzymanie bramy w dowolnym momencie jest możliwe nadal np.
otwierasz stop i chcesz dalej otwierać wciskasz otworzy i tak samo zamknij .