Nadgledanje stanja prekidača (digitalni serijski čitač) - Osnove Arduina

Nadgledanje stanja prekidača (digitalni serijski čitač) - Osnove Arduina

Ove osnove Arduina raspravljaju o metodi implementacije koda putem kojega se ON ili OFF stanje vanjskog gumba moglo čitati ili nadzirati unutar Arduina.



Digitalni serijski čitač

Ovdje kroz primjer učimo kako nadzirati stanje prekidača izvođenjem serijske komunikacije preko vašeg Arduina i vašeg računala putem USB-a.

Uz vašu Arduino ploču, trebali biste sljedeće temeljne stavke:





Hardver

Trenutni prekidač, gumb ili prekidač pritisni-za-uključivanje

Otpornik 10k, 1/4 vat ohma



kruha
spojne ili prespojne žice.

Kružni rad

Operacija se može izvesti u sljedećim koracima:

Uzmite 3 komada kratkospojničkih žica i zakačite ih svojom Arduino pločom. Dvije žice, crvena i crna, idu u dva duga okomita reda na bočnoj strani ploče koja postaju opskrbni kabeli ploče kako bi nosili potrebno 5V DC na ploču.

Treća žica koristi se za spajanje digitalnog pina 2 na jedan od vodova prekidača push-to-ON.

Ovaj se odvod gumba također povezuje s padajućim otpornikom od 10 k na negativnu opskrbnu tračnicu ili tlo. Drugi slobodni kabel prekidača povezan je s pozitivnim naponom od 5 volti.

S gore navedenim vezama, sklopka prebacuje ili izvodi dvostruko djelovanje u krugu kad se pritisne.

Kad je prekidač u isključenom položaju, njegova dva vodiča ostaju izolirana, tako da klin koji je povezan s masom preko padajućeg otpora daje NISKU ili logičku 0 razinu.

U pritisnutoj situaciji prekidač izvršava trenutno premošćivanje svoja dva izvoda, tako da su njegovi izvodi podvrgnuti + 5 volti, što daje VISOKU ili logičku razinu 1 preko njih.

Izoliranje digitalnih ulazno-izlaznih izvoda iz ostatka stvari moglo bi prisiliti LED da se isprazni i uzrokovati neredovito treptanje. To je zbog činjenice da se ulaz ni na što ne generira ili se drži u 'visećem' položaju - što znači da nije naznačen ni u jednoj određenoj logici, ni visokoj ni niskoj (+ 5V ili 0V), to je razlog zašto koristimo padajući otpor s prekidačem.

Shematski

Razumijevanje Kodeksa

U sljedećem programu u nastavku započinjemo sa serijskom komunikacijom unutar funkcije postavljanja brzinom od 9600 bitova podataka u sekundi, to se pokreće između ploče Arduino i priključenog računala: Serial.begin (9600)

U sljedećem koraku pokrećemo digitalni pin 2, pin koji bi bio odgovoran za izlaz s prekidačem za pritiskanje kao ulazom: pinMode (2, INPUT) Ovo završava naše 'postavljanje', sada uplovljavamo u glavnu petlju našeg koda .

Ovdje se pritiskom na tipku kroz naš krug smije provući 5 volti, dok se ulazni klin povezuje sa zemljom kroz otpornik od 10 kilohm kada je u stanju pritiska.

Gore navedeno nazivamo digitalnim ulazom, a odnosi se na stanje u kojem prekidač može biti samo u određenom stanju bilo uključeno (Arduino ga prihvaća kao '1', ili LOGIC HIGH) ili isključeno (vizualizirano Arduino kao '0' ili LOGIC LOW), bez ikakvih drugih nedefiniranih država.

Temeljna radnja koju trebamo izvršiti u glavnoj petlji programa je primjena varijable za zadržavanje podataka na mjestu poslanih putem gumba.

Kao što je gore spomenuto sa signalima koji su u obliku ili '1' ili '0', ovdje koristimo int tip podataka. Ovu varijablu možemo nazvati sensorValue i popraviti je tako da odgovara svemu što se čita na digitalnom pinu 2. Sve ovo postaje ostvarivo u jednom retku koda:

int sensorValue = digitalRead (2) Nakon što Arduino pročita ulaz, ispišite ga natrag na računalo u obliku decimalne vrijednosti.

To se može implementirati uz pomoć naredbe Serial.println () u završnom retku koda: Serial.println (sensorValue)

Nakon toga, kad god se serijski monitor pokrene u domeni Arduino, svjedoci ćemo lanca '0' tijekom otvorenog položaja gumba i lanca '1' u slučaju da se gumb drži u zatvorenom stanju.

/*
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
}




Prethodno: Prilagođeni kontroler protoka vode s krugom za mjerenje vremena Sljedeće: Pretvaranje analognog u digitalno (analogno serijsko čitanje) - Osnove Arduina