whitedog169 Napisano Grudzień 29, 2019 Udostępnij Napisano Grudzień 29, 2019 Na wstępie witam wszystkich i dziękuję za ewentualną pomoc. Mam 6 sztuk przekaźników które chcę załączać 6 przyciskami, jest taki warunek że po wciśnięciu któregokolwiek z 6 przycisków zawsze załącza się tylko ten przekaźnik do którego jest przypisany przycisk, pozostałe są wyłączone. Nie wiem jakiej komendy użyć aby po naciśnięciu przycisku styk na danym przekaźniku został zamknięty na stałe dopóki nie zostanie wciśnięty którykolwiek z pozostałych przycisków ( obecny kod załącza styki tylko na czas kiedy przycisk jest wciśnięty) tak mi się wydaje bo jeszcze nie testowałem kodu. W założeniu kod ma dla pewności zachować stan wyłączonych przekaźników odczekaniu 2 sekund przed załączeniem właściwego przekaźnika. Czy nie pomyliłem stanów LOW/HIGH ? int relayPin8 = 8; // Wejście modułu przekaźnika podłączone do pinu 8 int relayPin9 = 9; // Wejście modułu przekaźnika podłączone do pinu 9 int relayPin10 = 10; // Wejście modułu przekaźnika podłączone do pinu 10 int relayPin11 =11; // Wejście modułu przekaźnika podłączone do pinu 11 int relayPin12 = 12; // Wejście modułu przekaźnika podłączone do pinu 12 int relayPin13 = 13; // Wejście modułu przekaźnika podłączone do pinu 13 void setup(){ pinMode(relayPin8,OUTPUT); pinMode(relayPin9,OUTPUT); pinMode(relayPin10,OUTPUT); pinMode(relayPin11,OUTPUT); pinMode(relayPin12,OUTPUT); pinMode(relayPin13,OUTPUT); pinMode(2, INPUT); // pin 2 wejście przełacznika pinMode(3, INPUT); // pin 3 wejście przełacznika pinMode(4, INPUT); // pin 4 wejście przełacznika pinMode(5, INPUT); // pin 5 wejście przełacznika pinMode(6, INPUT); // pin 6 wejście przełacznika pinMode(7, INPUT); // pin 7 wejście przełacznika digitalWrite(8, LOW); // wejścia od 8 do 13 wyłączone przy uruchomieniu digitalWrite(9, LOW); // wejścia od 8 do 13 wyłączone przy uruchomieniu digitalWrite(10, LOW); // wejścia od 8 do 13 wyłączone przy uruchomieniu digitalWrite(11, LOW); // wejścia od 8 do 13 wyłączone przy uruchomieniu digitalWrite(12, LOW); // wejścia od 8 do 13 wyłączone przy uruchomieniu digitalWrite(13, LOW); // wejścia od 8 do 13 wyłączone przy uruchomieniu } void loop(){ if(digitalRead(2) == HIGH) // jeżeli na pinie 2 zamkniemy przełączmik to.. { digitalWrite(relayPin9,LOW); // przekażnik wyłącz digitalWrite(relayPin10,LOW); // przekażnik wyłącz digitalWrite(relayPin11,LOW); // przekażnik wyłącz digitalWrite(relayPin12,LOW); // przekażnik wyłącz digitalWrite(relayPin13,LOW); // przekażnik wyłącz delay(2000); // czekaj 2 sekundy digitalWrite(relayPin8,HIGH); // przekażnik włącz } if(digitalRead(3) == HIGH) // jeżeli na pinie 3 zamkniemy przełączmik to.. { digitalWrite(relayPin8,LOW); digitalWrite(relayPin10,LOW); digitalWrite(relayPin11,LOW); digitalWrite(relayPin12,LOW); digitalWrite(relayPin13,LOW); delay(2000); digitalWrite(relayPin9,HIGH); } if(digitalRead(4) == HIGH) // jeżeli na pinie 4 zamkniemy przełączmik to.. { digitalWrite(relayPin8,LOW); digitalWrite(relayPin9,LOW); digitalWrite(relayPin11,LOW); digitalWrite(relayPin12,LOW); digitalWrite(relayPin13,LOW); delay(2000); digitalWrite(relayPin10,HIGH); } if(digitalRead(5) == HIGH) // jeżeli na pinie 5 zamkniemy przełączmik to.. { digitalWrite(relayPin8,LOW); digitalWrite(relayPin9,LOW); digitalWrite(relayPin10,LOW); digitalWrite(relayPin12,LOW); digitalWrite(relayPin13,LOW); delay(2000); digitalWrite(relayPin11,HIGH); } if(digitalRead(6) == HIGH) // jeżeli na pinie 6 zamkniemy przełączmik to.. { digitalWrite(relayPin8,LOW); digitalWrite(relayPin9,LOW); digitalWrite(relayPin10,LOW); digitalWrite(relayPin11,LOW); digitalWrite(relayPin13,LOW); delay(2000); digitalWrite(relayPin12,HIGH); } if(digitalRead(7) == HIGH) // jeżeli na pinie 7 zamkniemy przełączmik to.. { digitalWrite(relayPin8,LOW); digitalWrite(relayPin9,LOW); digitalWrite(relayPin10,LOW); digitalWrite(relayPin11,LOW); digitalWrite(relayPin12,LOW); delay(2000); digitalWrite(relayPin13,HIGH); } } Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Grudzień 30, 2019 Udostępnij Grudzień 30, 2019 @whitedog169 witam na forum 🙂 Jeśli chcesz, aby przyciski włączały i wyłączały przekaźniki na stałe to najprościej będzie dorobić zmienne pomocnicze, które będą trzymały informacje o aktualnym stanie przekaźnika. Wtedy po wciśnięciu przycisku sprawdzasz zmienną, ustawiasz przeciwny stan na przekaźniku i zapisujesz go do zmiennej pomocniczej (to jedno z rozwiązań). Najlepiej będzie jeśli zrobisz testowy program dla jednego przekaźnika - łatwiej zrozumiesz to w praktyce. Link do komentarza Share on other sites More sharing options...
whitedog169 Styczeń 2, 2020 Autor tematu Udostępnij Styczeń 2, 2020 OK.Dziękuję. Ogarnąłem to na dwóch przekaźnikach i rozbudowałem do 6 sztuk na swoje potrzeby. Oto kod który działa. int pushButton2 =2;// piny dla włączników int pushButton3 =3;// piny dla włączników int pushButton4 =4;// piny dla włączników int pushButton5 =5;// piny dla włączników int pushButton6 =6;// piny dla włączników int pushButton7 =7;// piny dla włączników int pushButton13 =13;// piny dla włączników int relayPin8 = 8; // Wejście modułu przekaźnika podłączone do pinu 8 int relayPin9 = 9; // Wejście modułu przekaźnika podłączone do pinu 9 int relayPin10 = 10; // Wejście modułu przekaźnika podłączone do pinu 10 int relayPin11 =11; // Wejście modułu przekaźnika podłączone do pinu 11 int relayPin12 = 12; // Wejście modułu przekaźnika podłączone do pinu 12 int relayPinA0 = A0; // Wejście modułu przekaźnika podłączone do pinu A0 int pushed[] ={0,0,0,0,0,0,0}; int relayStatus[] ={HIGH,HIGH,HIGH,HIGH,HIGH,HIGH}; void setup() { pinMode(pushButton2, INPUT_PULLUP); // określenie statusu przełącznika na pinie 2 jako wejście sygnału pinMode(pushButton3, INPUT_PULLUP); // określenie statusu przełącznika na pinie 3 jako wejście sygnału pinMode(pushButton4, INPUT_PULLUP); // określenie statusu przełącznika na pinie 4 jako wejście sygnału pinMode(pushButton5, INPUT_PULLUP); // określenie statusu przełącznika na pinie 5 jako wejście sygnału pinMode(pushButton6, INPUT_PULLUP); // określenie statusu przełącznika na pinie 6 jako wejście sygnału pinMode(pushButton7, INPUT_PULLUP); // określenie statusu przełącznika na pinie 7 jako wejście sygnału pinMode(pushButton13, INPUT_PULLUP); // określenie statusu przełącznika na pinie 13 jako wejście sygnału pinMode(relayPin8, OUTPUT); // określenie statusu przekaźnika na pinie 8 jako wyjście sygnału pinMode(relayPin9, OUTPUT); // określenie statusu przekaźnika na pinie 9 jako wyjście sygnału pinMode(relayPin10, OUTPUT); // określenie statusu przekaźnika na pinie 10 jako wyjście sygnału pinMode(relayPin11, OUTPUT); // określenie statusu przekaźnika na pinie 11 jako wyjście sygnału pinMode(relayPin12, OUTPUT); // określenie statusu przekaźnika na pinie 12 jako wyjście sygnału pinMode(relayPinA0, OUTPUT); // określenie statusu przekaźnika na pinie A0 jako wyjście sygnału digitalWrite(relayPin8, HIGH);// status przekażnika przy uruchomieniu płytki wyłączony OFF digitalWrite(relayPin9, HIGH);// status przekażnika przy uruchomieniu płytki wyłączony OFF digitalWrite(relayPin10, HIGH);// status przekażnika przy uruchomieniu płytki wyłączony OFF digitalWrite(relayPin11, HIGH);// status przekażnika przy uruchomieniu płytki wyłączony OFF digitalWrite(relayPin12, HIGH);// status przekażnika przy uruchomieniu płytki wyłączony OFF digitalWrite(relayPinA0, HIGH);// status przekażnika przy uruchomieniu płytki wyłączony OFF } void loop() { if(digitalRead(2) == LOW) // jeżeli na pinie 2 zamkniemy przełącznik to.. { digitalWrite(relayPin9,HIGH);// przekażnik pinu 9 wyłączony digitalWrite(relayPin10,HIGH);// przekażnik pinu 10 wyłączony digitalWrite(relayPin11,HIGH);// przekażnik pinu 11 wyłączony digitalWrite(relayPin12,HIGH);// przekażnik pinu 12 wyłączony digitalWrite(relayPinA0,HIGH);// przekażnik pinu A0 wyłączony delay(500); digitalWrite(relayPin8,LOW);// przekażnik pinu 8 włączony } if(digitalRead(3) == LOW) // jeżeli na pinie 3 zamkniemy przełącznik to.. { digitalWrite(relayPin8,HIGH);// przekażnik pinu 8 wyłączony digitalWrite(relayPin10,HIGH);// przekażnik pinu 10 wyłączony digitalWrite(relayPin11,HIGH);// przekażnik pinu 11 wyłączony digitalWrite(relayPin12,HIGH);// przekażnik pinu 12 wyłączony digitalWrite(relayPinA0,HIGH);// przekażnik pinu A0 wyłączony delay(500); digitalWrite(relayPin9,LOW);// przekażnik pinu 9 włączony } if(digitalRead(4) == LOW) // jeżeli na pinie 4 zamkniemy przełącznik to.. { digitalWrite(relayPin8,HIGH);// przekażnik pinu 8 wyłączony digitalWrite(relayPin9,HIGH);// przekażnik pinu 9 wyłączony digitalWrite(relayPin11,HIGH);// przekażnik pinu 11 wyłączony digitalWrite(relayPin12,HIGH);// przekażnik pinu 12 wyłączony digitalWrite(relayPinA0,HIGH);// przekażnik pinu A0 wyłączony delay(500); digitalWrite(relayPin10,LOW);// przekażnik pinu 10 włączony } if(digitalRead(5) == LOW) // jeżeli na pinie 5 zamkniemy przełącznik to.. { digitalWrite(relayPin8,HIGH);// przekażnik pinu 8 wyłączony digitalWrite(relayPin9,HIGH);// przekażnik pinu 9 wyłączony digitalWrite(relayPin10,HIGH);// przekażnik pinu 10 wyłączony digitalWrite(relayPin12,HIGH);// przekażnik pinu 12 wyłączony digitalWrite(relayPinA0,HIGH);// przekażnik pinu A0 wyłączony delay(500); digitalWrite(relayPin11,LOW);// przekażnik pinu 11 włączony } if(digitalRead(6) == LOW) // jeżeli na pinie 6 zamkniemy przełącznik to.. { digitalWrite(relayPin8,HIGH);// przekażnik pinu 8 wyłączony digitalWrite(relayPin9,HIGH);// przekażnik pinu 9 wyłączony digitalWrite(relayPin10,HIGH);// przekażnik pinu 10 wyłączony digitalWrite(relayPin11,HIGH);// przekażnik pinu 11 wyłączony digitalWrite(relayPinA0,HIGH);// przekażnik pinu A0 wyłączony delay(500); digitalWrite(relayPin12,LOW);// przekażnik pinu 12 włączony } if(digitalRead(7) == LOW) // jeżeli na pinie 7 zamkniemy przełącznik to.. { digitalWrite(relayPin8,HIGH);// przekażnik pinu 8 wyłączony digitalWrite(relayPin9,HIGH);// przekażnik pinu 9 wyłączony digitalWrite(relayPin10,HIGH);// przekażnik pinu 10 wyłączony digitalWrite(relayPin11,HIGH);// przekażnik pinu 11 wyłączony digitalWrite(relayPin12,HIGH);// przekażnik pinu 12 włączony delay(500); digitalWrite(relayPinA0,LOW);// przekażnik pinu A0 włączony } if(digitalRead(13) == LOW) // jeżeli na pinie 13 zamkniemy przełącznik to.. { delay(500); digitalWrite(relayPin8,HIGH);// przekażnik pinu 8 wyłączony digitalWrite(relayPin9,HIGH);// przekażnik pinu 9 wyłączony digitalWrite(relayPin10,HIGH);// przekażnik pinu 10 wyłączony digitalWrite(relayPin11,HIGH);// przekażnik pinu 11 wyłączony digitalWrite(relayPin12,HIGH);// przekażnik pinu 12 wyłączony digitalWrite(relayPinA0,HIGH);// przekażnik pinu A0 wyłączony } } Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »