Monitorizarea stării unui comutator (serie de citire digitală) - Noțiuni de bază Arduino

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





Această bază Arduino discută despre metoda de implementare a unui cod prin care starea ON sau OFF a unui buton extern ar putea fi citită sau monitorizată în cadrul Arduino.

Serial de citire digitală

Aici vom învăța printr-un exemplu cum să monitorizați starea unui comutator prin efectuarea de comunicații seriale pe Arduino și PC-ul dvs. prin USB.



În plus față de placa dvs. Arduino, veți avea nevoie de următoarele elemente fundamentale:

Hardware

Un comutator momentan, un buton sau un comutator push-to-ON



Rezistor 10k, 1/4 watt ohm

panou de masă
legături de sârmă de conectare sau jumper.

Funcționarea circuitului

Operațiunea se poate face cu următorii pași:

Luați 3 bucăți de fire jumper și conectați-le cu placa dvs. Arduino. Două fire, roșu și negru, merg pe cele două rânduri lungi verticale de pe partea laterală a panoului care devin cablurile de alimentare ale plăcii pentru a transporta necesare 5V DC la placa.

Cel de-al treilea fir este utilizat pentru conectarea pinului digital 2 la unul dintre cablurile comutatorului push-to-ON.

Acest cablu special al butonului se leagă, de asemenea, cu un rezistor de 10k de tip pull-down la șina de alimentare negativă sau la sol. Celălalt cablu liber al comutatorului este legat de pozitivul alimentării cu 5 volți.

Cu conexiunile de mai sus realizate, comutatorul comută sau efectuează o acțiune dublă în circuit atunci când i se dă o apăsare.

În mod normal, când comutatorul este într-o poziție deconectată, cele două cabluri ale acestuia rămân izolate, astfel încât știftul care este legat de sol prin intermediul rezistenței de tragere redă un nivel LOW sau un nivel logic 0.

În situația apăsată, comutatorul execută o punte momentană a celor două conducte ale sale, astfel încât conductele sale sunt supuse + 5 volți, redând un nivel ÎNALT sau logic 1 de-a lungul lor.

Izolarea pinout-urilor digitale I / O de restul lucrurilor ar putea forța LED-ul să devină neclintit și să provoace intermitent neregulat. Acest lucru se datorează faptului că intrarea nu este redată la nimic sau păstrată într-o poziție „suspendată” - ceea ce înseamnă că nu este desemnată pentru nicio logică definită, nici ridicată, nici scăzută (+ 5V sau 0V), acesta este motivul pentru care angajăm rezistență verticală cu comutatorul.

Schematic

Înțelegerea Codului

În următorul program de mai jos, începem cu comunicarea serială în cadrul funcției de configurare la rata de 9600 biți de date pe secundă, aceasta este inițiată între placa Arduino și computerul atașat: Serial.begin (9600)

În pasul următor declanșăm pinul digital 2, pinul care ar fi responsabil pentru ieșire cu comutatorul push ca intrare: pinMode (2, INPUT) Aceasta completează „configurarea” noastră, acum navigăm în bucla principală a codului nostru .

Aici, la apăsarea butonului, 5 volți este permis să treacă prin circuitul nostru, în timp ce pinul de intrare se leagă de sol prin rezistorul de 10 kilohm atunci când este într-o stare neprimată.

Cele de mai sus sunt ceea ce numim o intrare digitală, care se referă la o condiție în care comutatorul poate fi doar într-o anumită stare, fie o stare de pornire (acceptată de Arduino ca „1”, sau LOGIC HIGH) sau o stare de oprire (vizualizată) de Arduino ca „0”, sau LOGIC LOW), fără alte situații nedefinite între ele.

Acțiunea fundamentală pe care trebuie să o executăm în bucla principală a programului este să aplicăm o variabilă pentru păstrarea informațiilor pe loc care au fost trimise prin intermediul butonului.

Așa cum s-a discutat mai sus, semnalele fiind fie sub forma unui „1”, fie a unui „0”, aici folosim un tip de date int. Putem numi această variabilă ca sensorValue și o putem remedia pentru a corespunde cu tot ce se citește pe pinul digital 2. Toate acestea pot fi realizate printr-o singură linie de cod:

int sensorValue = digitalRead (2) Odată ce Arduino a citit intrarea, imprimați-o înapoi pe computer sub forma unei valori zecimale.

Acest lucru poate fi implementat cu ajutorul comenzii Serial.println () în linia finală a codului: Serial.println (sensorValue)

După aceasta, ori de câte ori Serial Monitor este inițiat în domeniul Arduino, am fi martorii unui lanț de '0 în timpul apăsării butonului în poziția deschisă, iar lanțurilor' 1 în cazul în care butonul este ținut în stare închisă.

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




Precedent: Controler personalizat de debit de apă cu circuit de temporizare Următorul: Conversia analogului în digital (Analog Read Serial) - Noțiuni de bază Arduino