Input felhúzóellenállás soros monitor

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);
  }
}

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.