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

Prova Vårt Instrument För Att Eliminera Problem





Denna Arduino-grunder diskuterar metoden för att implementera en kod genom vilken PÅ eller AV-tillståndet för en extern tryckknapp kan läsas eller övervakas i Arduino.

Digital lässerie

Här lär vi oss genom ett exempel hur man övervakar växelns tillstånd genom seriekommunikation över din Arduino och din dator via USB.



Utöver din Arduino Board, skulle du behöva följande grundläggande saker:

Hårdvara

En tillfällig strömbrytare, knapp eller en tryck-till-PÅ-omkopplare



10k, 1/4 watt ohm motstånd

bakbord
kopplings- eller bygeln.

Kretsdrift

Åtgärden kan göras med följande steg:

Ta tre stycken bygeltrådar och koppla ihop dem med ditt Arduino-kort. Två av ledningarna, röda och svarta, går till de två långa vertikala raderna på sidan av bakplattan som blir brädans tillförselkablar för att kunna bära krävs 5V DC till kortet.

Den tredje ledningen används för att ansluta den digitala stiftet 2 till en av ledningarna på push-to-ON-omkopplaren.

Denna speciella ledning på knappen kopplas också upp med ett neddragbart 10k-motstånd till den negativa matningsskenan eller marken. Den andra ledningen på omkopplaren är kopplad till 5-voltsförsörjningen.

Med ovanstående anslutningar växlar växeln eller utför en dubbel åtgärd i kretsen när den får ett tryck.

Normalt när omkopplaren är i ett frånkopplat läge, förblir de två ledningarna isolerade, så att stiftet som är kopplat till marken via neddragningsmotståndet gör en LÅG eller en logisk O-nivå.

I den pressade situationen utför omkopplaren en överbryggning av sina två ledningar, så att dess ledningar utsätts för + 5 volt, vilket ger en HÖG eller logisk 1 nivå över dem.

Att isolera de digitala i / o-uttagen från resten av sakerna kan tvinga lysdioden att gå i haywire och orsaka oregelbunden blinkning. Detta beror på att ingången inte överförs till någonting eller hålls i en 'hängande' position - vilket betyder att den inte är avsedd för någon bestämd logik, varken hög eller låg (+ 5V eller 0V), det är anledningen till att vi använder neddragningsmotstånd med omkopplaren.

Schematisk

Förstå koden

I följande program nedan börjar vi med seriell kommunikation inom installationsfunktionen med en hastighet av 9600 bitar data per sekund, detta initieras mellan Arduino-kortet och den anslutna datorn: Serial.begin (9600)

I nästa steg utlöser vi digital stift 2, stiftet som skulle vara ansvarigt för utgången med tryckknappen som ingång: pinMode (2, INPUT) Detta slutför vår 'inställning', nu seglar vi in ​​i huvudslingan i vår kod .

Här när du trycker på tryckknappen får 5 volt komma igenom vår krets, medan ingångsstiftet kopplas till marken genom 10-kilohm-motståndet när det är i otryckt tillstånd.

Ovanstående är vad vi kallar en digital ingång, som hänvisar till ett tillstånd där omkopplaren endast kan vara i ett visst tillstånd antingen ett på-tillstånd (accepterat av Arduino som ett '1' eller LOGIC HIGH) eller ett av-tillstånd (visualiserat av Arduino som en '0', eller LOGIC LOW), utan några andra odefinierade ställen däremellan.

Den grundläggande åtgärden som vi behöver utföra i programmets huvudslinga är att använda en variabel för att hålla informationen på plats som har skickats via tryckknappen.

Som diskuterats ovan med signalerna i form av antingen en '1' eller '0' använder vi här en int-datatyp. Vi kan namnge denna variabel som sensorValue och fixa den så att den motsvarar allt som läses på digital stift 2. Alla dessa kan uppnås via en kodrad:

int sensorValue = digitalRead (2) När Arduino har läst ingången, skriv tillbaka den till datorn i form av ett decimalvärde.

Detta kan implementeras med hjälp av kommandot Serial.println () i den avslutande raden i koden: Serial.println (sensorValue)

Efter detta, närhelst den seriella bildskärmen initieras i Arduino-domänen, skulle vi bevittna en kedja med '0' när tryckknappen är öppen och kedjor '1' i de fall knappen hålls i stängt skick.

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




Tidigare: Anpassad vattenflödesregulator med tidkrets Nästa: Konvertera analog till digital (analog läs serie) - Arduino Basics