Menu
CoddyTech

Выбор с помощью 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-светодиоде.

challenge icon

Задание

Легко

Преврати ручку в селектор цвета с помощью 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
  }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Отсчёт времени без delay

Потренируйтесь самостоятельно: Песочница Arduino