Выражение switch

Выражение if дает вам возможность выбирать между двумя дискретными значениями - TRUE или FALSE. В тех случаях, когда необходимо сделать выбор из более чем двух вариантов, вы можете использовать выражение if несколько раз или выражение switch.

Switch позволяет сделать выбор среди нескольких дискретных условий. В данном примере показано, как именно использовать выражение switch для переключения между несколькими состояниями фоторезистора: очень темного, темного, среднего и светлого.

В программе данные считываются с фоторезистора. После этого используется функция map( ) для сопоставления и преобразования этих данных к одному из четырех значений: 0, 1, 2 или 3. В конце используется выражение switch () для отображения одного из сообщений на персональном компьютере в зависимости от значения, которое получилось.

Что вам понадобится

  • Arduino
  • 1 фоторезистор или аналоговый датчик
  • 1 резистор на 10 кОм
  • Макетная плата
  • Кабели

Схема подключения

Фоторезистор подключен к аналоговому пину 0. Резистор подключается от аналогового пина 0 к земле. Функция analogRead( ) возвращает значение в диапазоне от 0 до 600.

Arduino_Photocell

Электросхема

Arduino_Photocell_Scheme

Программа 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);       // задержка между считываниями для обеспечения стабильности работы

}