Menu
CoddyTech

Мигание по команде

Часть раздела Входные сигналы путешествия по Arduino на Coddy. Урок 18 из 22.

Введите 3, и светодиод должен мигнуть три раза, а затем остановиться. loop() и так повторяется, поэтому пусть она ведёт счёт: храните в переменной количество оставшихся миганий. Каждый раз, когда выполняется loop(), если мигания ещё остались, мигните один раз и уменьшите счёт на единицу.

int blinksLeft = 0;

void loop() {
  // число из монитора Serial задаёт значение blinksLeft
  if (blinksLeft > 0) {
    // одно мигание
    blinksLeft = blinksLeft - 1;
  }
}

Когда blinksLeft достигает 0, условие if ложно, и светодиод не горит до ввода следующего числа.

Символ новой строки после числа всё ещё приводит к тому, что через секунду parseInt() возвращает 0. Как и раньше, игнорируйте 0, иначе он сбросит количество оставшихся миганий.

challenge icon

Задание

Средне

Мигай светодиодом на контакте 13 столько раз, сколько число введено в Serial Monitor:

  • когда ожидают символы, прочитай число с помощью parseInt() и сохрани его в blinksLeft, если оно больше 0
  • если blinksLeft больше 0, мигни один раз (200 мс включён, 200 мс выключен) и уменьши значение на единицу

Нажми Run, отправь 3 из Serial Monitor, затем нажми Check.

Попробуйте сами

const int ledPin = 13;

int blinksLeft = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // число из монитора последовательного порта задаёт значение blinksLeft
  // пока blinksLeft больше 0, мигнуть один раз и уменьшить blinksLeft на единицу
}
quiz iconПроверьте себя

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

Все уроки раздела Входные сигналы

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