Monitoring State of a Switch (Digital Read Serial) - Arduino Basics

Prøv Instrumentet Vårt For Å Eliminere Problemer





Dette grunnleggende om Arduino diskuterer metoden for å implementere en kode gjennom hvilken PÅ eller AV-tilstanden til en ekstern trykknapp kan leses eller overvåkes i Arduino.

Digital leseserie

Her lærer vi gjennom et eksempel hvordan du overvåker tilstanden til en bryter ved å utføre seriell kommunikasjon over Arduino og PCen din via USB.



I overkant av Arduino Board, vil du kreve følgende grunnleggende ting:

Maskinvare

En øyeblikkelig bryter, knapp eller en trykk-til-PÅ-bryter



10k, 1/4 watt ohm motstand

brødbrett
koblinger eller koblinger.

Kretsdrift

Operasjonen kan gjøres med følgende trinn:

Ta tre stykker jumperledninger og koble dem til Arduino-kortet ditt. To av ledningene, røde og svarte, går til de to lange vertikale radene på siden av brødbordet som blir tilførselsledningene til brettet for å bære kreves 5V DC til styret.

Den tredje ledningen brukes til å koble den digitale pinnen 2 til en av ledningene til trykk-til-PÅ-bryteren.

Denne spesielle ledningen på knappen kobles også opp med en nedtrekkbar 10k motstand til den negative tilførselsskinnen eller bakken. Den andre ledningen på bryteren er koblet til det positive med 5 volt forsyning.

Med de ovennevnte tilkoblingene, bytter eller utfører bryteren en dobbel handling i kretsen når den får et trykk.

Normalt når bryteren er i frakoblet posisjon, forblir de to ledningene isolert, slik at tappen som er koblet til bakken via nedtrekksmotstanden, gir et lavt eller et logisk 0-nivå.

I den pressede situasjonen utfører bryteren en kort bro mellom de to ledningene, slik at ledningene blir utsatt for + 5 volt, noe som gir et HØYT eller logisk 1 nivå over dem.

Hvis du isolerer de digitale i / o-utkoblingene fra resten av tingene, kan LED-lampen tvinges til å bli haywire og forårsake uregelmessig blinking. Dette skyldes at inngangen ikke blir gitt til noe, eller holdes i en 'hengende' posisjon - noe som betyr at den ikke er bestemt til noen bestemt logikk, verken høy eller lav (+ 5V eller 0V), dette er grunnen til at vi bruker nedtrekksmotstand med bryteren.

Skjematisk

Forstå koden

I det følgende programmet nedenfor begynner vi med seriell kommunikasjon innen oppsettfunksjonen med en hastighet på 9600 biter data per sekund, dette initieres mellom Arduino-kortet og den vedlagte datamaskinen: Serial.begin (9600)

I neste trinn utløser vi digital pin 2, pin som vil være ansvarlig for utgangen med trykkbryteren som inngang: pinMode (2, INPUT) Dette fullfører vårt 'oppsett', nå seiler vi inn i hovedsløyfen til koden vår .

Her når du trykker på trykknappen, får 5 volt komme gjennom kretsen vår, mens inngangspinnen blir koblet til bakken gjennom motstanden på 10 kilohm når den er i en ikke-presset tilstand.

Ovennevnte er hva vi kaller en digital inngang, som refererer til en tilstand der bryteren bare kan være i en bestemt tilstand enten i på-tilstand (akseptert av Arduino som en '1' eller LOGISK HØY) eller i av-tilstand (visualisert av Arduino som en '0', eller LOGIC LOW), uten andre udefinerte sates i mellom.

Den grunnleggende handlingen vi trenger å utføre i hovedsløyfen til programmet, er å bruke en variabel for å holde informasjonen på plass som er sendt via trykknappen.

Som diskutert ovenfor med signalene i form av enten '1' eller '0', bruker vi her en int-datatype. Vi kan kalle denne variabelen som sensorValue, og fikse den slik at den samsvarer med alt som blir lest på digital pin 2. Alle disse kan oppnås via en kodelinje:

int sensorValue = digitalRead (2) Når Arduino har lest inngangen, kan du skrive den tilbake til datamaskinen i form av en desimalverdi.

Dette kan implementeres ved hjelp av kommandoen Serial.println () i den avsluttende linjen i koden: Serial.println (sensorValue)

Etter dette, hver gang den serielle skjermen startes i Arduino-domenet, vil vi være vitne til en kjede av '0'ere når trykknappen er åpen, og kjedene' 1 i tilfelle knappen holdes i lukket tilstand.

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




Forrige: Tilpasset vannstrømskontroller med tidtakerkrets Neste: Konvertering av analog til digital (analog leseserie) - Arduino Basics