• 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
Problem z programem do wlaczania bramy
#1
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.
 
Odpowiedź
  


Wiadomości w tym wątku
Problem z programem do wlaczania bramy - przez nikodemsz - 15-07-2017, 11:41

Skocz do:


Przeglądający: 1 gości