Выбор с помощью switch
Часть раздела Отсчёт времени без delay путешествия по Arduino на Coddy. Урок 8 из 18.
Когда у одной переменной может быть несколько значений и для каждого значения нужен свой код, цепочка из if и else if становится длинной. switch выполняет ту же задачу и выглядит как список:
switch (zone) {
case 0:
// выполняется, когда zone равно 0
break;
case 1:
// выполняется, когда zone равно 1
break;
default:
// выполняется, когда ни один case не подошёл (необязательно)
break;
}switch переходит к case, номер которого совпадает, и выполняет следующие за ним строки. break выходит из switch. Если забыть break, плата продолжит выполнять строки следующего варианта тоже — это называется проваливанием.
Здесь ручка разделена на четыре зоны. analogRead() возвращает значение от 0 до 1023, а деление на 256 даёт целое число: 0 для нижней четверти, затем 1, 2 и 3 в верхней. Каждая зона отображает свой цвет на RGB-светодиоде.
Задание
ЛегкоПреврати ручку в селектор цвета с помощью switch:
- зона 0: красный (уже написано)
- зона 1: зелёный
- зона 2: синий
- зона 3: белый (все три включены)
Используй setColor() и заверши каждый случай командой break;. Нажми Run, поверни ручку, затем нажми Check.
Попробуйте сами
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void setColor(int red, int green, int blue) {
digitalWrite(redPin, red);
digitalWrite(greenPin, green);
digitalWrite(bluePin, blue);
}
void loop() {
int zone = analogRead(A0) / 256; // 0, 1, 2 или 3
switch (zone) {
case 0:
setColor(HIGH, LOW, LOW); // красный
break;
// добавьте здесь зоны 1, 2 и 3
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Отсчёт времени без delay
1millis()
Часы на millis()Время в unsigned longМигание без задержкиДва светодиода, две скоростиМигание и переключение кнопкойСвет по таймеру4Точное измерение времени
Измерение с помощью micros()Когда millis() переполняетсяСекундомер с кнопкой2Конечные автоматы
Запоминаем режимВыбор с помощью switchИменованные состояния с enumКонечный автомат светофораПереключаем режимы кнопкойПотренируйтесь самостоятельно: Песочница Arduino