Bemutatja az INPUT_PULLUP használatát a pinMode()-dal
Utolsó felülvizsgálat: 2022.02.04 16:50
Ez a példa az INPUT_PULLUP használatát mutatja be a pinMode() függvénnyel. Monitorozza a kapcsoló állapotát azáltal, hogy soros kommunikációt létesít az Arduino és a számítógép között USB-n keresztül.
Ezen túlmenően, ha a bemenet HIGH, a 13-as kivezetéshez csatlakoztatott beépített LED kigyullad; ha LOW, a LED kialszik.
Hardver szükséglet
Arduino kártya
Egy pillanatkapcsoló, gomb vagy billenőkapcsoló
összekötő vezetékek
dugdosós próbapanel (breadboard)
Az áramkör

Csatlakoztasson két vezetéket az Arduino kártyához. A fekete vezeték köti össze a földet a nyomógomb egyik lábával. A második vezeték a 2. digitális kivezetéstől a nyomógomb másik lábához megy.
A nyomógombok vagy kapcsolók egy áramkör két pontját kapcsolják össze, amikor megnyomja őket. Nyitott (nem lenyomott) nyomógomb esetén nincs kapcsolat a nyomógomb két lába között. Mivel a 2. kivezetés belső felhúzása aktív, és 5 V-ra van csatlakoztatva, a gomb nyitva tartása esetén HIGH értéket olvasunk. Amikor a gomb le van zárva, az Arduino LOW üzenetet olvas, mert a földhöz való csatlakozás befejeződött
Vázlat

A kód
Az alábbi programban a legelső dolog, amit meg kell tennie a setup függvényben az, hogy soros kommunikációt kezd, 9600 bit/másodperc sebességgel a kártya és a számítógép között a következő sorral:
Serial.begin(9600);
Ezután inicializálja a 2. digitális kivezetést bemenetként, a belső felhúzó ellenállással:
pinMode(2,INPUT_PULLUP);
A következő sor a 13-as kivezetést a beépített LED-del kimenetté teszi:
pinMode(13, OUTPUT);
Most, hogy a setup rész befejeződött, lépjen be a kód fő ciklusába. Ha nem nyomja meg a gombot, a belső felhúzó ellenállás 5 voltra csatlakozik. Emiatt az Arduino "1" vagy HIGH értéket jelez. A gomb megnyomásakor az Arduino kivezetése a földre csatlakozik, így az Arduino "0" vagy LOW értéket jelez.
Az első dolog, amit meg kell tennie a program fő ciklusában, hogy létrehozzon egy változót, amely tárolja a kapcsolóból érkező információt. Mivel a kapcsolóból érkező információ "1" vagy "0" lesz, használhatunk int
adattípust. Hívjuk sensorValue
-nak ezt a változót, és tegye egyenlővé a 2. digitális kivezetésen olvasott értékkel. Mindezt egyetlen kódsorral érheti el:
int sensorValue = digitalRead(2);
Miután az Arduino elolvasta a bemenetet, nyomtassa ki ezt az információt decimális (DEC
) értékként a számítógépre. Ezt a Serial.println() paranccsal teheti meg az utolsó kódsorban:
Serial.println(sensorValue, DEC);
Most, amikor megnyitja a soros monitort az Arduino környezetben, "0"-t fog látni, ha a kapcsoló zárva van, vagy "1"-et, ha a kapcsoló nyitva van.
A 13. kivezetésen lévő LED világít, ha a kapcsoló HIGH állásban van, és kialszik, ha LOW.
/*
Input Pull-up Serial
Ez a példa a pinMode(INPUT_PULLUP) használatát mutatja be. Beolvassa a 2. kivezetésen lévő digitális
bemenetet, és kinyomtatja az eredményeket a soros monitorra.
Az áramkör:
- pillanatkapcsoló a 2-es kivezetésről a földre kapcsolva
- beépített LED a 13-as kivezetésen
A pinMode(INPUT)-tól eltérően nincs szükség lehúzó ellenállásra. Egy belső 20 kohmos ellenállás
5V-ra húzza. Ez a konfiguráció azt eredményezi, hogy a bemenet HIGH-t olvas, amikor a kapcsoló
nyitva van, és LOW-t, ha zárva van.
created 14 Mar 2012
by Scott Fitzgerald
Ez a kód nyilvános.
https://docs.arduino.cc/built-in-examples/digital/InputPullupSerial
*/
void setup() {
//soros csatlakozás indítása
Serial.begin(9600);
//konfigurálja a 2. kivezetést bemenetként, és engedélyezze a belső felhúzó ellenállást
pinMode(2, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop() {
//beolvassa a nyomógomb értékét egy változóba
int sensorVal = digitalRead(2);
//nyomtassa ki a nyomógomb értékét
Serial.println(sensorVal);
// Ne feledje, hogy a felhúzás azt jelenti, hogy a nyomógomb logikája fordított.
// HIGH-ra megy, ha nyitva van, és LOW-ra, ha megnyomják. Kapcsolja be a 13-as kivezetést,
// ha lenyomja a gombot, és kapcsolja ki, ha nem:
if (sensorVal == HIGH) {
digitalWrite(13, LOW);
} else {
digitalWrite(13, HIGH);
}
}