Monitoring State of a Switch (Digital Read Serial) - Mga Pangunahing Kaalaman sa Arduino

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Ang mga pangunahing kaalaman sa Arduino na ito ay tumatalakay sa pamamaraan ng pagpapatupad ng isang code kung saan ang ON o OFF na estado ng isang panlabas na push-button ay maaaring basahin o subaybayan sa loob ng Arduino.

Digital Read Serial

Dito natututunan namin sa pamamagitan ng isang halimbawa kung paano subaybayan ang estado ng isang switch sa pamamagitan ng pagsasagawa ng serial na komunikasyon sa kabuuan ng iyong Arduino at iyong PC sa pamamagitan ng USB.



Sa labis sa iyong Arduino Board, kakailanganin mo ang mga sumusunod na pangunahing item:

Hardware

Isang pansamantalang switch, button, o isang switch na push-to-ON



10k, 1/4 watt ohm risistor

breadboard
mga link ng hook-up o jumper wire.

Pagpapatakbo ng Circuit

Ang operasyon ay maaaring gawin sa mga sumusunod na hakbang:

Kumuha ng 3 piraso ng mga wire ng lumulukso at isabit ito sa iyong Arduino board. Ang dalawa sa mga wire, pula at itim, ay papunta sa dalawang mahabang patayong hilera sa gilid ng breadboard na naging mga supply cord ng board upang madala ang kinakailangan ng 5V DC sa pisara.

Ang pangatlong kawad ay ginagamit para sa pagkonekta sa digital pin 2 sa isa sa mga lead ng push-to-ON switch.

Ang partikular na tingga ng pindutan na ito ay nag-uugnay din sa isang pull-down na 10k risistor sa negatibong supply rail o sa lupa. Ang iba pang libreng lead ng switch ay naka-link sa positibong 5 volt supply.

Gamit ang mga koneksyon sa itaas na ginawa, ang switch ay nagpapalipat-lipat o nagsasagawa ng isang dalawahang aksyon sa circuit kapag binigyan ng isang push.

Karaniwan kapag ang switch ay nasa isang pagkakakonekta na posisyon, ang dalawang mga lead na ito ay mananatiling nakahiwalay, tulad ng ang pin na naka-link sa lupa sa pamamagitan ng pull-down na risistor ay nagbibigay ng isang LOW, o isang antas ng lohika 0.

Sa pinindot na sitwasyon ang switch ay nagpapatupad ng panandalian isang bridging ng dalawang lead nito, na ang mga lead nito ay napapailalim sa + 5 volts, na nagbibigay ng isang TAAS, o antas ng lohika 1 sa kanila.

Ang paghihiwalay ng mga digital i / o pinout mula sa natitirang mga bagay, ay maaaring pilitin ang LED na pumunta sa haywire at maging sanhi ng hindi nag-blink na blinking. Ito ay dahil sa ang katunayan na ang input ay hindi naibigay sa anumang bagay, o itinatago sa isang 'nakabitin' na posisyon - ibig sabihin hindi ito itinalaga sa anumang tiyak na lohika, hindi mataas o mababa (+ 5V o 0V), ito ang dahilan kung bakit ginagamit namin ang pull-down risistor gamit ang switch.

Skematika

Pag-unawa sa Code

Sa sumusunod na programa sa ibaba, nagsisimula kami sa serial na komunikasyon sa loob ng pag-andar ng pag-set up sa rate ng 9600 piraso ng data bawat segundo, pinasimulan ito sa pagitan ng Arduino board at ng nakalakip na computer: Serial.begin (9600)

Sa susunod na hakbang ay pinasisimulan namin ang digital pin 2, ang pin na responsable para sa output na may push switch bilang isang input: pinMode (2, INPUT) Nakumpleto nito ang aming 'pag-setup', ngayon ay naglayag kami sa pangunahing loop ng aming code .

Dito sa pagpindot sa pushbutton, pinapayagan ang 5 volts na dumaan sa aming circuit, habang ang input pin ay nai-link sa lupa sa pamamagitan ng 10-kilohm resistor kapag nasa isang hindi naka-compress na kondisyon.

Sa itaas ay tinatawag naming isang digital input, na tumutukoy sa isang kundisyon kung saan ang switch ay maaari lamang sa isang partikular na estado alinman sa on state (tinanggap ng Arduino bilang isang '1', o LOGIC HIGH) o isang off state (isinalarawan ng Arduino bilang isang '0', o LOGIC LOW), na walang iba pang mga hindi natukoy na sate sa pagitan ng kung anupaman.

Ang pangunahing pagkilos na kailangan namin upang maipatupad sa pangunahing loop ng programa ay upang mag-apply ng isang variable para sa pagpapanatili ng impormasyon sa lugar na naipadala sa pamamagitan ng pindutan ng push.

Tulad ng tinalakay sa itaas na may mga signal na nasa anyo ng alinman sa isang '1' o isang '0', gumagamit kami dito ng isang int datatype. Maaari naming pangalanan ang variable na ito bilang sensorValue, at ayusin ito upang maiugnay ang lahat ng nababasa sa digital pin 2. Lahat ng mga ito ay maaaring makamit sa pamamagitan ng isang linya ng code:

int sensorValue = digitalRead (2) Kapag nabasa na ng Arduino ang input, i-print ito pabalik sa computer sa anyo ng isang decimal na halaga.

Maaari itong ipatupad sa tulong ng utos na Serial.println () sa linya ng pagtatapos ng code: Serial.println (sensorValue)

Pagkatapos nito, tuwing ang Serial Monitor ay pinasimulan sa domain ng Arduino, masasaksihan namin ang isang kadena ng '0's habang ang pindutan ng push ay bukas na posisyon, at ang mga chain' 1's sa mga kaso ang pindutan ay gaganapin sa saradong kondisyon.

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




Nakaraan: Customized Water Flow Controller na may Timer Circuit Susunod: Pag-convert ng Analogue sa Digital (Analogue Read Serial) - Mga Pangunahing Kaalaman sa Arduino