Egy kapcsoló olvasása, és az állapotának kinyomtása az Arduino soros monitorra.
Utolsó felülvizsgálat: 2022.02.04 16:50
Ez a példa bemutatja, hogyan figyelheti a kapcsoló állapotát az Arduino és a számítógép közötti soros kommunikáció létrehozásával USB-n keresztül.
Hardver szükséglet
Arduino kártya
Egy pillanatkapcsoló, gomb vagy billenőkapcsoló
10 kohm-os ellenállás
összekötő vezetékek
dugdosós próbapanel (breadboard)
Az áramkör

Csatlakoztasson három vezetéket a kártyához. Az első kettő, a piros és a fekete, a breadboard szélénél lévő két hosszú függőleges sorhoz csatlakozik, hogy hozzáférést biztosítson az 5 voltos táphoz és a földhöz. A harmadik vezeték a 2. digitális kivezetéstől a nyomógomb egyik lábáig tart. A gombnak ugyanez a lába csatlakozik egy lehúzó ellenálláson keresztül (itt 10k ohm) a földhöz. A gomb másik lába az 5 voltos tápfeszültségre csatlakozik.
A nyomógombok vagy kapcsolók egy áramkör két pontját kapcsolják össze, amikor megnyomja őket. Nyitott (nincs lenyomva) nyomógomb esetén nincs kapcsolat a nyomógomb két lába között, így a kivezetés földelve van (a lehúzó ellenálláson keresztül), és LOW-nak vagy 0-nak jelenik meg. Amikor a gomb zárt (le van nyomva), összeköttetést hoz létre a két lába között, és a kivezetést 5 V-ra köti, így a kivezetés HIGH vagy 1 értéket mutat.
Ha mindenről leválasztja a digitális i/o kivezetést, előfordulhat, hogy az olvasás tévelygőre változik. Ennek az az oka, hogy a bemenet "lebegő" - vagyis nincs szilárd kapcsolata a feszültséggel vagy a földeléssel, és véletlenszerűen HIGH vagy LOW értéket Ennek az az oka, hogy a bemenet "lebegő" - vagyis nincs szilárd kapcsolata a feszültséggel vagy a földeléssel, és véletlenszerűen Ennek az az oka, hogy a bemenet "lebegő" - vagyis nincs szilárd kapcsolata a feszültséggel vagy a földeléssel, és véletlenszerűen HIGH vagy LOW értéket ad vissza. Ezért kell egy lehúzó ellenállás az áramkörben.
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, azt a kivezetést, amely a gomb kimenetét olvassa bemenetként:
pinMode(2,INPUT);
Most, hogy a setup teljes, lépjen be a kód fő ciklusába. Mikor a gombot megnyomják, az 5 volt szabadon áramlik át az áramkörön, mikor nem nyomják meg, a bemeneti kivezetés a 10k ohmos ellenálláson keresztül a földhöz kapcsolódik. Ez egy digitális bemenet, ami azt jelenti, hogy a kapcsoló csak bekapcsolt (az Arduino "1"-nek vagy HIGH-nak látja), vagy kikapcsolt (az Arduino "0"-nak vagy LOW-nak látja) állapotban lehet, más semmi sem.
Az első dolog, amit meg kell tennie a program fő ciklusában, hogy létrehozzon egy változót a kapcsolóból érkező információk tárolására. Mivel a kapcsolóból érkező információ "1" vagy "0" lesz, használhat int
adattípust. Hívjuk ezt a változót sensorValue
-nak, és állítsa egyenlőnek a 2. digitális kivezetésen olvasott értékkel. Mindezt egyetlen kódsorral érheti el:
int sensorValue = digitalRead(2);
Miután a kártya beolvasta a bevitelt, nyomtassa ki ezt az információt a számítógépre decimális értékként. Ezt a Serial.println() paranccsal teheti meg az utolsó kódsorban:
Serial.println(sensorValue);
Most, amikor megnyitja a soros monitort az Arduino Software (IDE) programban, "0"-t fog látni, ha a kapcsoló nyitva van, vagy "1"-et, ha a kapcsoló zárva van.
/*
DigitalReadSerial
Beolvassa a 2. kivezetésen lévő digitális bemenetet, az eredményt kinyomtatja a soros monitorra
Ez a példakód nyilvános.
https://docs.arduino.cc/built-in-examples/basics/DigitalReadSerial
*/
// a 2-es digitális kivezetéshez egy nyomógomb tartozik. Adjunk neki nevet:
int pushButton = 2;
// a setup (beállítási) funkció egyszer fut le, amikor megnyomja a reset gombot, vagy bekapcsolja a kártyát:
void setup() {
// a soros kommunikáció inicializálása 9600 bit/s sebességgel:
Serial.begin(9600);
// állítsa be a nyomógomb kivezetésését bemenetnek:
pinMode(pushButton, INPUT);
}
// a loop (ciklus) függvény újra és újra lefut, örökké:
void loop() {
// a bemeneti kivezetés olvasása
int buttonState = digitalRead(pushButton);
// nyomtassuk ki a nyomógomb állapotát
Serial.println(buttonState);
delay(1); // késleltetés a leolvasások között a stabilitás érdekében
}
Tudj meg többet
További alapvető oktatóanyagokat a beépített példák részben talál.
Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.