Switch (case) utasítás használata érzékelő bemenettel

Hogyan válasszunk diszkrét számú érték közül.


Utolsó felülvizsgálat: 2022.02.04 16:50


Az if utasítás lehetővé teszi, hogy két diszkrét opció közül válasszon: IGAZ vagy HAMIS. Ha kettőnél több lehetőség van, használhat több if utasítást, vagy használhatja a switch utasítást. A Switch lehetővé teszi, hogy több különálló opció közül válasszon. Ez az oktatóanyag bemutatja, hogyan válthat a fotóellenállás négy kívánt állapota között: igazán sötét, halvány, közepes és világos.

Ez a program először a fotoellenállást olvassa. Ezután a map() függvény segítségével leképezi a kimenetét a négy érték valamelyikére: 0, 1, 2 vagy 3. Végül a switch() utasítást használja a négy üzenet egyikének a kinyomtatására a számítógépre attól függően, hogy a négy érték közül melyiket adja vissza.

Hardver szükséglet

  • Arduino kártya

  • fotoellenállás vagy más analóg érzékelő

  • 10 kohm-os ellenállás

  • összekötő vezetékek

  • dugdosós próbapanel (breadboard)

Az áramkör

A fotoellenállás analóg bemenetre csatlakozik a 0. kivezetésen egy feszültségosztó áramkör segítségével. Egy 10 kohmos ellenállás alkotja a feszültségosztó másik oldalát, amely az analóg 0 kivezetéstől a földig megy. Az analogRead() függvény körülbelül 0 és 600 közötti tartományt ad vissza ebből az áramkörből egy megfelelően megvilágított beltéri helyiségben.

Vázlat

A kód

/*
  Switch statement

  A switch utasítás használatát mutatja be. A switch utasítás lehetővé teszi,
  hogy egy változó diszkrét értékei közül válasszon. Olyan ez, mint az
  if utasítások sorozata.

  A vázlat működésének megtekintéséhez helyezze a táblát és az érzékelőt egy 
  jól megvilágított helyiségbe, nyissa ki a soros monitort, és fokozatosan
  mozgassa a kezét az érzékelő felett.

  Az áramkör:
  - fotoellenállás analóg 0-tól +5V-ig
  - 10 kohm ellenállás analóg 0-tól a földig

  created 1 Jul 2009
  modified 9 Apr 2012
  by Tom Igoe

  Ez a kód nyilvános.

  https://docs.arduino.cc/built-in-examples/control-structures/SwitchCase
*/

// ezek az állandók nem változnak. Ezek a legalacsonyabb és legmagasabb értékek,
// amelyeket az érzékelőtől kap:
const int sensorMin = 0;      // érzékelő minimum, kísérlet során állapították meg
const int sensorMax = 600;    // érzékelő maximum, kísérlet során állapították meg
void setup() {
  // soros kommunikáció inicializálása:
  Serial.begin(9600);
}

void loop() {
  // érzékelő olvasása:
  int sensorReading = analogRead(A0);
  // leképezi az érzékelő tartományát négy lehetőség közé:
  int range = map(sensorReading, sensorMin, sensorMax, 0, 3);

  // tegyen valamit a tartomány értékétől függően:
  switch (range) {
    case 0:    // a keze az érzékelőn van
      Serial.println("dark");
      break;
    case 1:    // a keze közel van az érzékelőhöz
      Serial.println("dim");
      break;
    case 2:    // a keze néhány centire van az érzékelőtől
      Serial.println("medium");
      break;
    case 3:    // a keze távol van az érzékelőtől
      Serial.println("bright");
      break;
  }
  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.