Lüliti oleku jälgimine (digitaalne lugemisjaam) - Arduino põhitõed

Proovige Meie Instrumenti Probleemide Kõrvaldamiseks





Selles Arduino põhitõdes on arutatud koodi rakendamise meetodit, mille kaudu saaks Arduinos välise nupu ON või OFF olekut lugeda või jälgida.

Digitaalne lugejada

Siit õpime näite abil, kuidas lüliti olekut jälgida, teostades USB-ühenduse kaudu oma Arduino ja arvuti kaudu järjestikku sidet.



Lisaks Arduino juhatusele vajate järgmisi põhilisi elemente:

Riistvara

Hetkeline lüliti, nupp või sisselülitatav lüliti



10k, 1/4 vatt-oomi takisti

leivalaud
konksu või hüppaja juhtmete ühendused.

Ahela töö

Toimingut võib teha järgmiste sammudega:

Võtke 3 tükki hüppajajuhtmeid ja kinnitage need oma Arduino lauaga. Kaks punast ja musta juhtmest lähevad leivaplaadi küljel olevasse kahte pika vertikaalse rea külge, mis muutuvad plaadi toitejuhtmeteks, et kanda vaja plaadile 5V alalisvoolu.

Kolmandat juhet kasutatakse digitaalse tihvti 2 ühendamiseks push-to-ON lüliti ühe juhtmega.

See konkreetne nupu juhe ühendub ka allatõmmatava 10k takistiga negatiivse toiterööpa või maa külge. Lüliti teine ​​vaba juhe on ühendatud positiivse 5-voldise toiteallikaga.

Kui ülaltoodud ühendused on tehtud, lülitab lüliti lülituse sisse või täidab ahelas topelttoimingu, kui seda antakse.

Tavaliselt, kui lüliti on lahti ühendatud asendis, jäävad selle kaks juhet isoleerituks, nii et tihvt, mis on maapinnaga ühendatud allakäigutakisti kaudu, annab LOW või loogika 0 taseme.

Vajutatud olukorras lülitab lüliti oma kahe juhtme hetkega kokku, nii et selle juhtmed on allutatud + 5 volti, muutes nende taseme HIGH või loogika 1 tasemele.

Digitaalsete sisend- ja väljundühenduste eraldamine muudest asjadest võib sundida LED-i segamini minema ja põhjustada ebakorrektset vilkumist. Selle põhjuseks on asjaolu, et sisendit ei renderdata millekski või hoitakse rippuvas asendis - see tähendab, et seda pole määratud mingiks kindlaks loogikaks, ei kõrgeks ega madalaks (+ 5V või 0V), seetõttu kasutame allakäigutakisti lülitiga.

Skeemiline

Koodeksist aru saamine

Järgmises allpool toodud programmis alustame häälestusfunktsioonis järjestikku sidet kiirusega 9600 bitti sekundis, see algatatakse Arduino plaadi ja lisatud arvuti vahel: Serial.begin (9600)

Järgmises etapis käivitame digitaalse tihvti 2, tihvti, mis vastutaks väljundi eest, kui sisendiks on tõukelüliti: pinMode (2, INPUT) See on meie 'seadistamine' lõpule viidud, nüüd liigume oma koodi põhisilmusesse .

Nupu vajutamisel lastakse meie vooluahelast läbi pääseda 5 volti, samas kui sisendtihv seotakse maapinnaga 10-kilohmi takisti kaudu, kui see on survestamata.

Eespool nimetatut nimetatakse digitaalsisendiks, mis viitab tingimusele, kus lüliti võib olla ainult kindlas olekus kas sisse lülitatud olekus (Arduino aktsepteeritud kui '1' või LOGIC HIGH) või väljalülitatud olekus (visualiseeritud Arduino poolt kui '0' või 'LOGIC LOW'), kusjuures nende vahel pole muid määratlemata kuupäevi.

Põhitegevus, mille peame programmi peatsüklis täitma, on muutuja rakendamine, et hoida nupu kaudu saadetud teavet paigas.

Nagu eespool arutletud, kus signaalid on kas '1' või '0', kasutame siin int-tüüpi andmetüüpi. Saame nimetada selle muutuja sensorValueiks ja parandada selle, et see vastaks kõigele, mida digitaalsel tihvtil 2 loetakse. Kõik need muutuvad ühe koodirea kaudu saavutatavaks:

int sensorValue = digitalRead (2) Kui Arduino on sisendi läbi lugenud, printige see kümnendarvuna arvutisse tagasi.

Seda saab rakendada koodi lõpureal oleva käsu Serial.println () abil: Serial.println (sensorValue)

Pärast seda, kui seeriamonitor käivitatakse Arduino domeenis, oleksime tunnistajaks '0' ahelale, kui surunupp on avatud asendis, ja ketid '1', kui nuppu hoitakse suletud olekus.

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




Paari: Kohandatud veevoolu regulaator taimeri vooluringiga Järgmine: Analoogi teisendamine digitaalseks (analoog-loendis seeria) - Arduino põhitõed