Skocz do zawartości

Sterowanie kilkunastoma przekaźnikami


Nocnywedrownik

Pomocna odpowiedź

Witam wszystkich!

Mam pytanie odnośnie możliwości wysterowania modułu 12 przekaźników poprzez Arduino.

Chodzi o to, że mam do obsłużenia 6 elektrozamków w drzwiach, które działają na zasadzie zwolnij klamkę (6 VDC przez czas 100 ms) - przerwa na otwarcie drzwi np. 5 sekund - zablokuj klamkę (-6 VDC czas 100 ms) (potrzebne dwa przekaźniki na jeden elektozamek). Czas cyklu to ok 5,2 sekundy.

Przy każdych drzwiach posiadam czytniki RFID, które będą sygnalizować chęć wejścia.

Chodzi o to, czy wykonywanie jednego cyklu, nie przyblokuje mi możliwości otworzenia w tym samym czasie innych drzwi? W sensie, że jeśli ktoś będzie w trakcie otwierania np drzwi nr 1, uniemożliwi w tym czasie otwarcie drzwi np. nr 4. 

Rozumiem,  że podczas odliczania przerwy 5 sekund pomiędzy podaniem sygnałów +6 VDC/ -6VDC, sprawdzanie stanu wejść z innych par drzwi będzie zblokowane do momentu wykonania pełnego programu?

Taki przykładowy kod przychodzi mi do głowy (dla dwóch par drzwi):

void setup() {
  pinMode(7, OUTPUT); //+6 VDC drzwi nr 1
  pinMode(8, OUTPUT); //-6 VDC drzwi nr 1
  pinMode(9, OUTPUT); //+6 VDC drzwi nr 2
  pinMode(10, OUTPUT); //-6 VDC drzwi nr 2
 
  pinMode(5, INPUT_PULLUP); //Sygnał z drzwi nr 1
  pinMode(6, INPUT_PULLUP); //Sygnał z drzwi nr 2

}
 
void loop()
{

  if (digitalRead(5) == LOW) { //Jeśli jest sygnał z drzwi nr 1
    digitalWrite(7, HIGH); //włącz przekaźnik +6 VDC (klamka odblokowana)
    delay(100); //Czas działania przekaźnika
    digitalWrite(7, LOW); //wyłącz przekaźnik +6 VDC
    delay(5000); //Czas na wciśniecie klamki
    digitalWrite(8, HIGH); //włącz przekaźnik -6 VDC (klamka zablokowana)
    delay(100); //Czas działania przekaźnika
    digitalWrite(8, LOW); //wyłącz przekaźnik -6 VDC

  if (digitalRead(6) == LOW) { //Jeśli jest sygnał z drzwi nr 2
    digitalWrite(9, HIGH); //włącz przekaźnik +6 VDC (klamka odblokowana)
    delay(100); //Czas działania przekaźnika
    digitalWrite(9, LOW); //wyłącz przekaźnik +6 VDC
    delay(5000); //Czas na wciśniecie klamki
    digitalWrite(10, HIGH); //włącz przekaźnik -6 VDC (klamka zablokowana)
    delay(100); //Czas działania przekaźnika
    digitalWrite(10, LOW); //wyłącz przekaźnik -6 VDC
}

Czy jest możliwość rozpisania kodu w ten sposób, ażeby wejścia z pozostałych drzwi wykonywały sekwencje do nich przypisane, niezależnie od stanu na wejściach/wyjściach innych drzwi?

W skrócie mówiąc - chodzi o pracę równoległą dla poszczególnych grup wejść/wyjść.

Edytowano przez Gieneq
Zachęcam do używania bloku kodu
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.