Arduino knappen handledning (1 / 6 steg)
Steg 1: Ansluta knappen
Detta är en tillfällig switch, med en stabil position (öppen) när ingen kraft utövas, och genomföra (stängd) när du trycker på. Det är en av de enklaste elektromekaniska sensorenheten.
Anslut knappen som illustreras i bilden av detta steg.
(Inte imponeras av storleken på min skärbräda. En liten en blir faktiskt handier.)
I/o Pin
AVR (aka ATmega, dvs Atmel chip driver Arduino styrelsen) har flera I/O pins. I/O innebär att de fritt kan konfigureras av programvara som ingång eller utgång.
Stift 2 kommer att vara ett bra val för vår exempel. Det används för att mäta tillståndet för knappen: trycks ned och släpps.
Pull-up Resistor
PIN-koden måste vara ansluten till någonstans via knappen. Frågan är: där.
En första idé skulle vara att gå till VCC. VCC är den vanliga benämningen för matningsspänningen, här 5V.
Så när knappen trycks stiftet skulle anslutas till VCC, och programvaran skulle läsa högt. Men när knappen släpps, PIN-koden är ansluten till ingenstans, aka "flytande", och kommer att utsättas för buller, och mjukvaran kommer att läsa högt och lågt på ett oberäkneligt sätt.
Så är lösningen att använda en så kallad pull-up eller pull-down motstånd. Sådan en resistor säkerställer att PIN-koden är alltid ansluten till GND eller VCC, direkt eller via motstånd, beroende på knappen.
Lyckligtvis har AVR chip internt, en 20 kOhm pull-up resistor som kan anslutas till stift (internt). PIN-koden måste konfigureras som indata, och dess värde, i denna situation, berättar om pull-up är ansluten (annars värdet definierar, när PIN-koden är konfigurerad som utgång, dess utgång tillstånd).
Med denna pull-up, ska vi ansluta stift till GND via knappen, och har dessa situationer när knappen släpps, respektive tryckte:
-Knappen inte:
VCC
|
20K ||
inre ||
pull-up |_|
|
| _____
input – – – * – – – o – – – o o – – – GND
PIN släppt
knappen
Input är isolerad från GND, så bara ansluten till VCC via motståndet. Inga aktuella flöden.
Utan pull-up resistor, skulle ingång vara "flytande".
Knappen är nedtryckt:
VCC
| :
20K || :
inre || :
pull-up |_| : några aktuella flöden
| `- - - - - - - - - ->
|
input – – – * – – – o – – – o– – –o – – – GND
PIN sköt
knappen
Input är nu direkt ansluten till GND. Några aktuella strömmar genom resistorn.
I båda fallen har vi nu en tydlig situation.
Konsumtion
När knappen trycks, motståndet blir en spänningsskillnad lika med VCC, och en nuvarande jag strömmar:
JAG = VCC / R
= 5 / 20.000 = 0,25 mA
Motsvarar förbrukar energi P:
P = VCC2 / R
= 52 / 20.000 = 1,25 mW
Detta är inte mycket, och förbrukas endast när knappen trycks. Ofta har pull-up och pull-down motstånd ännu större värden, förbrukar därmed mindre energi. Om du inte har särskilda skäl, använda denna behändiga 20 k inre pull-up.
Polaritet
Hade vi en pull-down till vårt förfogande, vi skulle ha anslutna PIN-koden till VCC istället för GND, och läsa högt på pressen, vilket är mer logiskt. Men eftersom vi har en pull-up bara, vi har att vända polariteten av programvara, i stift provtagning.
För mer information om I/O pins, Följ http://www.arduino.cc/en/Tutorial/DigitalPins.
Programmering
Konfigurationen av AVR PIN-koden (som indata och pull-up aktiverat) beskrivs i koden nedan.
Koden
––––––––––8<––––––––––
#define BUTTON_PIN 2
void setup()
{
...
pinMode (BUTTON_PIN, indata);
digitalWrite (BUTTON_PIN, hög); ansluta interna pull-up
...
}
void loop()
{
...
}
––––––––––>8––––––––––