Выражение switch
Выражение if дает вам возможность выбирать между двумя дискретными значениями - TRUE или FALSE. В тех случаях, когда необходимо сделать выбор из более чем двух вариантов, вы можете использовать выражение if несколько раз или выражение switch.
Switch позволяет сделать выбор среди нескольких дискретных условий. В данном примере показано, как именно использовать выражение switch для переключения между несколькими состояниями фоторезистора: очень темного, темного, среднего и светлого.
В программе данные считываются с фоторезистора. После этого используется функция map( ) для сопоставления и преобразования этих данных к одному из четырех значений: 0, 1, 2 или 3. В конце используется выражение switch () для отображения одного из сообщений на персональном компьютере в зависимости от значения, которое получилось.
Что вам понадобится
- Arduino
- 1 фоторезистор или аналоговый датчик
- 1 резистор на 10 кОм
- Макетная плата
- Кабели
Схема подключения
Фоторезистор подключен к аналоговому пину 0. Резистор подключается от аналогового пина 0 к земле. Функция analogRead( ) возвращает значение в диапазоне от 0 до 600.
Электросхема
Программа Arduino
/*
Выражение Switch
Демонстрирует использование выражения switch, которое в данном случае помогает вам выбирать среди набора дискретных значений переменной.
Для того, чтобы увидеть работу скетча в реальности, установите плату и сенсор в хорошо освещенной комнате, откройте окно серийного монитора и постепенно приближайте руку к чувствительному элементу фоторезистора, создавая тень.
Схема подключения:
* фоторезистор от аналогового пина 0 к 5 Вольтам from analog in 0 to +5V
* резистор на 10 кОм от аналогового пина 0 к земле.
*/
// эти константы не будут изменяться. Они определяют
// нижнюю и верхню границы значений, которые считываются с вашего датчика:
const int sensorMin = 0; // минимальное значение
const int sensorMax = 600; // максимальное значение
void setup() {
// инициализация серийного соединения:
Serial.begin(9600);
}
void loop() {
// считывание значений с датчика:
int sensorReading = analogRead(A0);
// преобразование диапазона датчика в в диапазон четырех значений:
int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
// совершать различные действия в зависимости от:
// значения range:
switch (range) {
case 0: // ваша рука полностью накрыла фоторезистор
Serial.println("dark");
break;
case 1: // ваша рука находится близко к фоторезистору
Serial.println("dim");
break;
case 2: // ваша рука в нескольких сантиметрах от фоторезистора
Serial.println("medium");
break;
case 3: // ваша рука совершенно не над чувствительным элементом датчика
Serial.println("bright");
break;
}
delay(1); // задержка между считываниями для обеспечения стабильности работы
}