Spremljanje stanja stikala (digitalno branje serijsko) - Osnove Arduina

Preizkusite Naš Instrument Za Odpravo Težav





Te osnove Arduina razpravljajo o načinu izvajanja kode, s pomočjo katere je bilo mogoče v Arduinu brati ali nadzirati stanje vklopa ali izklopa zunanjega gumba.

Digitalni serijski bralnik

Tu se skozi primer naučimo, kako nadzirati stanje stikala z izvedbo serijske komunikacije prek vašega Arduina in računalnika prek USB-ja.



Poleg vaše plošče Arduino bi zahtevali naslednje temeljne predmete:

Strojna oprema

Trenutno stikalo, gumb ali stikalo za vklop



10k, 1/4 vatov ohmski upor

plošča
priključne ali preskočne žične povezave.

Delovanje vezja

Operacija se lahko izvede z naslednjimi koraki:

Vzemite 3 kose žic mostičkov in jih priklopite s ploščo Arduino. Dve žici, rdeča in črna, greta v dve dolgi navpični vrsti na strani plošče, ki postaneta napajalni kabli plošče, da lahko nosite zahteva 5V DC na ploščo.

Tretja žica se uporablja za priključitev digitalnega zatiča 2 na enega od vodnikov stikala push-to-ON.

Ta poseben vodnik gumba se prav tako poveže s spustnim uporom 10k na negativno dovodno tirnico ali tla. Drugi prosti vod stikala je povezan s pozitivnim napajanjem 5 voltov.

Z zgornjimi priključki stikalo preklopi ali izvede dvojno delovanje v vezju, ko ga pritisnete.

Ko je stikalo v odklopljenem položaju, ostaneta njegova dva kabla izolirana, tako da zatič, ki je prek spustnega upora povezan s tlemi, upusti LOW ali logično 0 nivo.

V stisnjeni situaciji stikalo za trenutek izvede premostitev obeh vodnikov, tako da so njegovi vodniki izpostavljeni + 5 voltov, kar povzroči VISOKO ali logično 1 raven čez njih.

Izolacija digitalnih vhodno-izhodnih izhodov od ostalih stvari bi lahko prisilila LED, da bi šla navzdol in povzročila nenamerno utripanje. To je posledica dejstva, da vhod ni nikdar upodobljen ali ohranjen v 'visečem' položaju - kar pomeni, da ni označen z nobeno določeno logiko, ne visoko ne nizko (+ 5V ali 0V), zato uporabljamo spustni upor s stikalom.

Shema

Razumevanje kodeksa

V naslednjem programu spodaj začnemo s serijsko komunikacijo znotraj nastavitvene funkcije s hitrostjo 9600 bitov podatkov na sekundo, to pa se začne med ploščo Arduino in priključenim računalnikom: Serial.begin (9600)

V naslednjem koraku sprožimo digitalni pin 2, pin, ki bi bil odgovoren za izhod s potisnim stikalom kot vhodom: pinMode (2, INPUT) S tem zaključimo našo 'nastavitev', zdaj zaplujemo v glavno zanko naše kode .

Tukaj s pritiskom na tipko sme skozi naše vezje priti 5 voltov, medtem ko je vhodni zatič povezan z zemljo skozi 10-kilogramski upor, ko je v stisnjenem stanju.

Zgoraj je tisto, čemur pravimo digitalni vhod, ki se nanaša na stanje, ko je stikalo lahko samo v določenem stanju bodisi v stanju vklopa (Arduino sprejme kot '1', ali LOGIC HIGH) bodisi v stanju izključenosti (vizualizirano Arduino kot '0' ali LOGIC LOW), brez kakršnih koli drugih nedefiniranih držav.

Temeljni ukrep, ki ga moramo izvesti v glavni zanki programa, je uporaba spremenljivke za ohranjanje informacij, ki so bile poslane prek gumba.

Kot smo že omenili, pri signalih v obliki '1' ali '0', tukaj uporabljamo int tip podatkov. To spremenljivko lahko poimenujemo kot SensValue in jo popravimo tako, da ustreza vsemu, kar se bere na digitalnem zatiču 2. Vse to postane mogoče doseči z eno vrstico kode:

int sensorValue = digitalRead (2) Ko Arduino prebere vhod, ga natisnite nazaj v računalnik v obliki decimalne vrednosti.

To lahko izvedemo s pomočjo ukaza Serial.println () v zaključni vrstici kode: Serial.println (sensorValue)

Po tem, vsakič, ko je serijski monitor zagnan v domeni Arduino, smo bili priča verigi 0, ko je gumb odprt, in verige 1, če je gumb v zaprtem 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
}




Prejšnja: Prilagojen krmilnik pretoka vode s časovnim vezjem Naprej: Pretvorba analognega v digitalno (analogno branje serijsko) - Osnove Arduina