Włączanie / Wyłączanie diody LED przyciskiem

Włączanie i wyłączanie diody LED przyciskiem

Poniżej znajdują się dwa przykładowe programy prezentujące dwa sposoby obsługi przycisku za pomocą Arduino. Pierwszy przykład wykorzystuje sprzętowo wbudowane w Arduino podciągnięcie pinu przycisku wewnętrznym rezystorem do plusa żeby sygnał na pinie nie "wisiał w powietrzu", a wciśnięcie przycisku powoduje pojawienie się sygnału niskiego na tym pinie. Trudnością może być też odwrotne rozumowanie wciśniętego przycisku gdzie sygnał niski LOW na pinie oznacza przycisk wciśnięty, a sygnał wysoki HIGH oznacza, że przycisk nie jest wciśnięty ale za to podłączenie układu jest prostsze. W wersji drugiej takiego samego programu wciskanie przycisku podaje na pin przycisku bardziej logiczne wartości tzn. wartość wysoką HIGH gdy przycisk wciśnięty oraz wartość niską LOW jeśli przycisk nie został wciśnięty ale za to do podłączenia układu wymagany jest dodatkowy rezystor podciągający sygnał do masy aby pin ten nie "wisiał w powietrzu".


Włączanie i wyłączanie diody przyciskiem (wersja trudniejsza w programowaniu łatwiejsza w podłączaniu).

W funkcji setup() ustawiamy dwa piny, które będziemy wykorzystywać, pin 2 jako sygnał z przycisku oraz pin 3 jako zasilanie diody. Instrukcja pinMode(2, INPUT_PULLUP) ustawia pin 2 jako wejście aby można było w programie odczytać czy przycisk został wciśnięty, a wartość INPUT_PULLUP oznacza, że logicznie ten przycisk będzie działać odwrotnie, czyli HIGH = wyłączony LOW = włączony ale w podłączeniu jest ciut prościej. Później podam przykład z trudniejszym podłączeniem i prostszym programowaniem.

Instrukcja pinMode(3, OUTPUT) ustawia pin nr 3 jako wyjście do zapalania podłączonej diody do tego pinu. Należy użyć też rezystora aby dioda nam się nie spaliła. Ostatnia funkcja w setup() digitalWrite(3,LOW) na starcie wyłącza prąd na pinie 3 tak aby dioda przypadkiem po włączeniu Arduino się nie świeciła.

W funkcji loop() zastosowana jest instrukcja warunkowa if(digitalRead(2)==LOW) co oznacza, że w kółko sprawdzamy czy pin nr 2 ma wartość LOW czyli czy nasz przycisk jest wciśnięty. Jeśli tak to wykonują się 3 instrukcje digitalWrite(3,HIGH) czyli zapala się dioda podłączona do pinu 3, następnie delay(2000) program czeka 2 sekundy po czym dioda zostaje zgaszona instrukcją digitalWrite(3,LOW).

Można też szybko zmodyfikować ten program usuwając instrukcję delay(2000) co spowoduje, że nasza dioda zapali się tylko w czasie gdy przycisk będzie wciśnięty.



Włączanie i wyłączanie diody przyciskiem (wersja łatwiejsza w programowaniu trudniejsza w podłączaniu).

Cały jak program wygląda jak poprzednio jednak różni się kilkoma szczegółami. W funkcji setup() ustawiamy dwa piny, które będziemy wykorzystywać, pin 2 jako sygnał z przycisku oraz pin 3 jako zasilanie diody. Instrukcja pinMode(2, INPUT) ustawia pin 2 jako wejście aby można było w programie odczytać czy przycisk został wciśnięty, a wartość INPUT oznacza, że logicznie ten przycisk będzie działać normalnie czyli LOW = wyłączony HIGH= włączony.

Instrukcja pinMode(3, OUTPUT) ustawia pin nr 3 jako wyjście do zapalania podłączonej diody do tego pinu. Należy użyć też rezystora aby dioda nam się nie spaliła. Ostatnia funkcja w setup() digitalWrite(3,LOW) na starcie wyłącza prąd na pinie 3 tak aby dioda przypadkiem po włączeniu Arduino się nie świeciła.

W funkcji loop() zastosowana jest instrukcja warunkowa if(digitalRead(2)==HIGH) co oznacza, że w kółko sprawdzamy czy pin nr 2 ma wartość HIGH czyli czy nasz przycisk jest wciśnięty. Jeśli tak to wykonują się 3 instrukcje digitalWrite(3,HIGH) czyli zapala się dioda podłączona do pinu 3, następnie delay(2000) program czeka 2 sekundy po czym dioda zostaje zgaszona instrukcją digitalWrite(3,LOW).

Inny odrobinę trudniejszy sposób podłączenia przestawiony został na schemacie poniżej. Rożnica polega na tym, że pin nr 2 w Arduino został podłączony do masy poprzez rezystor o wartości 10kOhm. Podłączenie takie powoduje, że na pinie nr 2 w czasie gdy przycisk nie został wciśnięty zawsze będzie sygnał 0, a po wciśnięciu przycisku +5V czyli 1. Gdyby nie było takiego połączenia w elektronice nazywanego pull down to na pinie nr 2 w Arduino stan byłby nieustalony czyli ani 0 ani 1 co przez nasz program odczytywałby stan pinu nr 2 jako przypadkowe wciśnięcie i zwolnienie podłączonego przycisku.

UWAGA!!

Takie podłączenie bez dodatkowego rezystora 10kOhm spowodowałoby zwarcie w mikrokontrolerze i trwałe uszkodzenie układu.