Liczba postów: 5
Liczba wątków: 2
Dołączył: Sep 2019
Reputacja:
0
Witam od jakiegoś czasu próbuje napisać program do sterowania 8 przekaźnikami z różnymi skutkami ( raczej mizernymi )
Potrzebuję wysterować przekaźniki na płytce 8 relay module przycisk zapala po kolei przekaźniki od 1 do 8 z opóźnieniem 1 s i ponowne naciśnięcie przycisku wyłącza przekaźniki od 8 do 1 z opóźnieniem 2 s
załączenie udało się napisać a w drugą stronę to już nie działa,po zaniku napięcia i powrocie układ za łącza przekaźniki (coś namieszałem w programie)
Próbowałem nawet w programach graficznych to zrobią ale nic nie wyszło
Jeżeli ktoś mógł by coś takiego napisać albo podesłać link do programu lub podobnego rozwiązania będę bardzo wdzięczny
bo już zaczynam siwieć
Płytka arduino nano + 8 relay module
Z góry dziękuje i pozdrawiam Piotr
Liczba postów: 296
Liczba wątków: 0
Dołączył: Aug 2019
Reputacja:
8
Pokaż kod programu, który napisałeś. Kod umieszcza się w znacznikach syntax.
Pokaż schemat jak to wszystko podłączyłeś. Schemat ma być elektryczny a nie świąteczne malowanki.
Liczba postów: 5
Liczba wątków: 2
Dołączył: Sep 2019
Reputacja:
0
22-09-2019, 21:04
(Ten post był ostatnio modyfikowany: 22-09-2019, 21:07 przez Piotr82.)
ten program załącza przekaźniki
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(11, INPUT_PULLUP); //Przycisk jako wejście
digitalWrite(11, INPUT_PULLUP); //Włączenie przekaźnika
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
void loop()
{
if (digitalRead(11) == LOW) { //Jeśli przycisk wciśnięty
digitalWrite(2, LOW); //Włącz przekaźnik
delay(1000); //Czekamy 1 sekund
digitalWrite(3, LOW); //Włącz
delay(1000); //Czekamy 1 sekund
digitalWrite(4, LOW); //Włącz
delay(1000); //Czekamy 1 sekund
digitalWrite(5, LOW); //Włącz
delay(1000); //Czekamy 1 sekund
digitalWrite(6, LOW); //Włącz
delay(1000); //Czekamy 1 sekund
digitalWrite(7, LOW); //Włącz
delay(1000); //Czekamy 1 sekund
digitalWrite(8, LOW); //Włącz
delay(1000); //Czekamy 1 sekund
digitalWrite(9, LOW); //Włącz
}
a w drugą stronę ani rusz (ostatni projekt najbardziej skopany nie zapisałem )
a programem graficznym próbowałem bo robiłem kiedyś w systemie drabinkowym a txt to dla mnie czarna magia
Liczba postów: 880
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
42
22-09-2019, 21:14
(Ten post był ostatnio modyfikowany: 22-09-2019, 21:14 przez Jarewa0606.)
A niby co ma robić w druga stronę jak nic nie napisałeś?
Polecam ten kurs -
https://forbot.pl/blog/kurs-arduino-srod...owac-id936
Tam sie wszystkiego dowiesz...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 880
Liczba wątków: 19
Dołączył: Jun 2018
Reputacja:
42
No tak ale przewidział tak zw."drgania styków"?
Wiec takie if (digitalRead(11) == LOW) - wykonaj coś jest do .........
Lepiej użyć jakiejś biblioteki , lub samemu coś wykonać if (digitalRead(11) == LOW) odczekaj chwilę , jeśli nadal if (digitalRead(11) == LOW) wykonaj coś. I nawet jeśli maja być flagi lepiej żeby pamiętał ostatni stan, zeby sie wykonało jednorazowo..
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą.
Liczba postów: 2,368
Liczba wątków: 0
Dołączył: Oct 2017
Reputacja:
240
Tak czy inaczej bez choćby umiejętności używania millis() trudno będzie Ci to zrobić. W tamtym kursie na forbocie jest to ostatnia lekcja, a tu na forum mnóstwo przykładów z użyciem millis do zarządzania czasem.