Przekażniki sterowane przyciskiem chwilowym

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
mscomp
Młodszy majsterkowicz
Posty: 3
Rejestracja: 14 mar 2018, 15:30

Przekażniki sterowane przyciskiem chwilowym

Post autor: mscomp » 14 mar 2018, 15:31

Witam
Potrzebuje wykonać układ, który będzie sterowany jednym przyciskiem chwilowym.
1. Jedno krótkie naciśnięcie załącza/wylacza przekaźnik a
2. Jedno długie naciśnięcie tego samego przycisku załącza/wylacza przekaźnik b
3. Podwójne naciśnięcie załącza/wyłącza oba przekazniki.

Dodatkowo żeby za pomocą przełączników można było ustalać czy po zaniku napięcia ma być zapamiętany czy nie stan przekaźników.

Czy ktoś może mi pomóc napisać program i rozrysować schemat?

Wysłane z mojego MHA-L29 przy użyciu Tapatalka

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
Slawek
Starszy majsterkowicz
Posty: 451
Rejestracja: 29 mar 2015, 15:05

Re: Przekażniki sterowane przyciskiem chwilowym

Post autor: Slawek » 15 mar 2018, 11:01

To ma być układ tylko analogowy czy z wykorzystaniem uC ?

Pozdr
mscomp
Młodszy majsterkowicz
Posty: 3
Rejestracja: 14 mar 2018, 15:30

Re: Przekażniki sterowane przyciskiem chwilowym

Post autor: mscomp » 16 mar 2018, 13:56

Slawek pisze:To ma być układ tylko analogowy czy z wykorzystaniem uC ?

Pozdr
Raczej z uC

Wysłane z mojego MHA-L29 przy użyciu Tapatalka

Awatar użytkownika
Slawek
Starszy majsterkowicz
Posty: 451
Rejestracja: 29 mar 2015, 15:05

Re: Przekażniki sterowane przyciskiem chwilowym

Post autor: Slawek » 17 mar 2018, 21:20

Poniżej wrzucam obsługę przycisku dla krótkiego wciśnięcia i długiego :

Kod: Zaznacz cały


long buttonTimer = 10;			// czas krotkiego wcisniecia przycisku
#define LONGTIME 1000			// czas dlugiego wcisniecia przycisku
boolean buttonActive = false;		// zmienna obslugi przycisku
boolean longPressActive = false;	// zmienna obslugi przycisku

void przycisk() {
	
	if (digitalRead(SW) == LOW) {
		if (buttonActive == false) {
			buttonActive = true;
			buttonTimer = millis();
		}
		if ((millis() - buttonTimer > LONGTIME) && (longPressActive == false)) {
			longPressActive = true;

			// procedura dla dlugiego stanu przycisku

	
		}
	} else {
		if (buttonActive == true) {
			if (longPressActive == true) {
				longPressActive = false;
				} else {
		
				// procedura dla krotkiego stanu przycisku
		
			}
			buttonActive = false;
		}
	}
	
}
Przycisk podciągnięty wewnętrznym pullupem czyli zdefiniowany jako pinMode(SW, INPUT_PULLUP);
Funkcja oparta oo millis a nie delay, więc nie blokuje wykonywania programu.

Dalej sobie już sam poradzisz ;)

Pozdr
mscomp
Młodszy majsterkowicz
Posty: 3
Rejestracja: 14 mar 2018, 15:30

Re: Przekażniki sterowane przyciskiem chwilowym

Post autor: mscomp » 19 mar 2018, 17:01

dzięki za pomoc
będę z tym walczył
jak by co pozwolę sobie jeszcze zadać dodatkowe pytania
ODPOWIEDZ

Strony partnerskie: