Monitorovací stav prepínača (sériové digitálne čítanie) - základy Arduina

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





Tento základ Arduina pojednáva o spôsobe implementácie kódu, prostredníctvom ktorého je možné v Arduine čítať alebo monitorovať stav ON alebo OFF externého tlačidla.

Sériové digitálne čítanie

Tu sa na príklade dozvedáme, ako monitorovať stav prepínača pomocou sériovej komunikácie medzi počítačom Arduino a počítačom cez USB.



Okrem vašej dosky Arduino by ste vyžadovali nasledujúce základné položky:

Hardware

Dočasný spínač, tlačidlo alebo prepínač push-to-ON



Rezistor 10 k, 1/4 watt ohm

nepájivá doska
spojovacie alebo prepojovacie vodiče.

Prevádzka obvodu

Operáciu je možné vykonať pomocou nasledujúcich krokov:

Vezmite 3 kusy prepojovacích vodičov a pripevnite ich k doske Arduino. Dva z vodičov, červený a čierny, smerujú do dvoch dlhých zvislých radov na bočnej strane nepájivej dosky, ktoré sa stávajú napájacími káblami dosky, aby sa do potrebných 5V DC na dosku.

Tretí vodič sa používa na pripojenie digitálneho kolíka 2 k jednému z vodičov prepínača push-to-ON.

Toto konkrétne vedenie tlačidla sa tiež spája so sťahovacím rezistorom 10k na zápornú napájaciu lištu alebo na zem. Druhé voľné vedenie spínača je spojené s kladom napájania 5 voltov.

Pri vykonaných vyššie uvedených prepojeniach prepínač prepína alebo vykonáva dvojitú činnosť v obvode, keď je stlačený.

Normálne, keď je spínač v odpojenej polohe, jeho dva vodiče zostávajú izolované, takže kolík, ktorý je spojený so zemou pomocou sťahovacieho odporu, vytvára nízku alebo logickú 0 úroveň.

V stlačenej situácii prepínač vykoná okamžité premostenie svojich dvoch vodičov, takže jeho vodiče sú vystavené napätiu + 5 voltov, čím sa na nich vytvorí VYSOKÁ alebo logická úroveň 1.

Ak odizolujete digitálne vstupno-výstupné konektory od zvyšku vecí, mohlo by to prinútiť LED diódu k rozbitiu a spôsobiť nepravidelné blikanie. Je to spôsobené tým, že vstup nie je k ničomu vykreslený alebo držaný v „visiacej“ polohe - čo znamená, že nie je určený na žiadnu jednoznačnú logiku, ani vysokú, ani nízku (+ 5 V alebo 0 V), preto používame sťahovací odpor so spínačom.

Schematické

Porozumenie kódexu

V nasledujúcom programe nižšie začíname sériovou komunikáciou v rámci funkcie nastavenia rýchlosťou 9600 bitov dát za sekundu, ktorá sa inicializuje medzi doskou Arduino a pripojeným počítačom: Serial.begin (9600)

V ďalšom kroku spustíme digitálny pin 2, pin, ktorý by bol zodpovedný za výstup so spínačom ako vstupom: pinMode (2, INPUT) Týmto je dokončené naše „nastavenie“, teraz sa plavíme do hlavnej slučky nášho kódu .

Tu po stlačení tlačidla sa môže cez náš obvod dostať 5 voltov, zatiaľ čo vstupný kolík sa spojí so zemou cez 10-kilohmový odpor, keď je v nestlačenom stave.

Vyššie uvedené nazývame digitálny vstup, ktorý označuje stav, keď prepínač môže byť iba v konkrétnom stave, buď v zapnutom stave (Arduino ho akceptuje ako „1“ alebo LOGIC HIGH) alebo vo vypnutom stave (vizualizované Arduino ako „0“ alebo LOGIC LOW) bez akýchkoľvek ďalších nedefinovaných mier medzi tým vôbec.

Základnou akciou, ktorú musíme vykonať v hlavnej slučke programu, je použitie premennej na udržanie informácií na mieste, ktoré boli odoslané prostredníctvom tlačidla.

Ako už bolo spomenuté vyššie, keď signály majú formu buď „1“ alebo „0“, používame tu dátový typ int. Túto premennú môžeme pomenovať ako sensorValue a opraviť ju tak, aby korešpondovala so všetkým, čo sa číta na digitálnom kolíku 2. Všetko je možné dosiahnuť pomocou jedného riadku kódu:

int sensorValue = digitalRead (2) Po načítaní vstupu Arduino ho vytlačte späť do počítača vo forme desatinnej hodnoty.

To je možné implementovať pomocou príkazu Serial.println () v záverečnom riadku kódu: Serial.println (sensorValue)

Potom, kedykoľvek je Serial Monitor spustený v doméne Arduino, mohli by sme byť svedkami reťazca „0“ počas otvorenej polohy tlačidla a reťazcov „1“ v prípade, že je tlačidlo držané v zatvorenom stave.

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




Dvojica: Prispôsobený regulátor prietoku vody s obvodom časovača Ďalej: Prevod analógového na digitálny (analógové čítanie sériovo) - základy Arduina