Monitorowanie stanu przełącznika (szeregowy odczyt cyfrowy) - podstawy Arduino

Wypróbuj Nasz Instrument Do Eliminowania Problemów





Te podstawy Arduino omawiają metodę implementacji kodu, za pomocą którego stan włączenia lub wyłączenia zewnętrznego przycisku może być odczytywany lub monitorowany w Arduino.

Cyfrowy odczyt szeregowy

Tutaj uczymy się na przykładzie, jak monitorować stan przełącznika, wykonując komunikację szeregową między Arduino i komputerem przez USB.



W nadmiarze w stosunku do swojej płyty Arduino potrzebujesz następujących podstawowych elementów:

Sprzęt komputerowy

Chwilowy przełącznik, przycisk lub przełącznik wciskany



Rezystor 10k, 1/4 wata

Płytka prototypowa
łączenie lub łączenie przewodów połączeniowych.

Działanie obwodu

Operację można wykonać, wykonując następujące czynności:

Weź 3 kawałki przewodów połączeniowych i połącz je z płytą Arduino. Dwa z nich, czerwony i czarny, idą do dwóch długich pionowych rzędów z boku płytki stykowej, które stają się przewodami zasilającymi płyty w celu przenoszenia wymagane 5 V DC do płyty.

Trzeci przewód służy do podłączenia cyfrowego pinu 2 do jednego z przewodów przełącznika push-to-ON.

Ten szczególny przewód przycisku jest również połączony z obniżającym rezystorem 10k do ujemnej szyny zasilającej lub masy. Drugi wolny przewód przełącznika jest połączony z dodatnim napięciem zasilania 5 V.

Po wykonaniu powyższych połączeń przełącznik przełącza się lub wykonuje podwójne działanie w obwodzie po naciśnięciu.

Zwykle, gdy przełącznik jest w pozycji rozłączonej, jego dwa przewody pozostają odizolowane, tak że pin, który jest połączony z masą za pośrednictwem rezystora obniżającego, generuje poziom LOW lub logiczny 0.

W stanie wciśniętym przełącznik chwilowo mostkuje swoje dwa przewody, tak że jego przewody są poddawane napięciu + 5 V, co skutkuje poziomem WYSOKIM lub logicznym 1 na nich.

Izolowanie cyfrowych styków wejścia / wyjścia od reszty może zmusić diodę LED do szaleństwa i spowodować nieregularne miganie. Wynika to z faktu, że wejście nie jest do niczego renderowane lub utrzymywane w pozycji `` wiszącej '' - co oznacza, że ​​nie jest przypisane do żadnej określonej logiki, ani wysokie, ani niskie (+ 5V lub 0V), dlatego używamy rezystor obniżający z wyłącznikiem.

Schematyczny

Zrozumienie Kodeksu

W poniższym programie zaczynamy od komunikacji szeregowej w ramach funkcji setup z szybkością 9600 bitów danych na sekundę, która jest inicjowana pomiędzy płytką Arduino a dołączonym komputerem: Serial.begin (9600)

W następnym kroku wyzwalamy cyfrowy pin 2, pin, który byłby odpowiedzialny za wyjście z przełącznikiem wciskanym jako wejściem: pinMode (2, INPUT) To kończy naszą 'konfigurację', teraz płyniemy do głównej pętli naszego kodu .

Tutaj po naciśnięciu przycisku przez nasz obwód może przedostać się 5 woltów, podczas gdy pin wejściowy zostaje połączony z masą przez rezystor 10 kiloomów, gdy jest w stanie nie wciśniętym.

Powyższe jest tym, co nazywamy wejściem cyfrowym, co odnosi się do stanu, w którym przełącznik może znajdować się tylko w określonym stanie albo w stanie włączenia (akceptowanym przez Arduino jako `` 1 '' lub LOGIC HIGH) lub w stanie wyłączenia (wizualizowane przez Arduino jako `` 0 '' lub LOGIC LOW), bez innych nieokreślonych stanów pomiędzy nimi.

Podstawową czynnością, którą musimy wykonać w głównej pętli programu, jest zastosowanie zmiennej do utrzymywania informacji, które zostały przesłane za pomocą przycisku.

Jak omówiono powyżej, z sygnałami, które mają postać „1” lub „0”, używamy tutaj typu danych int. Możemy nazwać tę zmienną sensorValue i naprawić wszystko, co jest odczytywane na cyfrowym pinie 2. Wszystko to można osiągnąć za pomocą jednej linii kodu:

int sensorValue = digitalRead (2) Gdy Arduino odczyta wejście, wydrukuj je z powrotem do komputera w postaci wartości dziesiętnej.

Można to zaimplementować za pomocą polecenia Serial.println () w końcowym wierszu kodu: Serial.println (sensorValue)

Następnie, za każdym razem, gdy monitor szeregowy jest inicjowany w domenie Arduino, bylibyśmy świadkami łańcucha „0”, gdy przycisk jest w pozycji otwartej, i łańcuchów „1” w przypadku, gdy przycisk jest utrzymywany w stanie zamkniętym.

/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor
This example code is in the public domain.
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600)
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT)
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton)
// print out the state of the button:
Serial.println(buttonState)
delay(1) // delay in between reads for stability
}




Poprzedni: Dostosowany kontroler przepływu wody z obwodem timera Dalej: Konwersja sygnału analogowego na cyfrowy (szeregowy odczyt analogowy) - Podstawy Arduino