Digitális olvasás soros monitorra

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.