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.