Опрос или прерывания
Почему некоторые события не могут ждать выполнения цикла.
«Опрос или прерывания» — бесплатный урок Arduino & IoT Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Arduino & IoT Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Arduino & IoT Academy содержит 4 уроков всего.
Постоянная проверка
До сих пор в вашем цикле использовался опрос: он снова и снова спрашивал каждый датчик и кнопку, не изменилось ли что-нибудь.
Опрос в действии
Обычно при каждом проходе цикла опрашивается вывод. Если значение совпадает с нужным, программа реагирует; в противном случае цикл просто продолжается. 🔁
if (digitalRead(buttonPin) == LOW) {
doSomething();
}Скрытая цена
Опрос работает, но тратит ресурсы, когда ничего не изменилось. Плата расходует такты на проверку вывода, который долго остаётся неизменным.
Когда цикл занят
Если медленная задача или длительная задержка удерживает цикл, быстрое нажатие может произойти и закончиться до того, как вы снова прочитаете состояние вывода.
События, которые нельзя ждать
Некоторые сигналы быстры и кратковременны: всплеск от датчика, фронт энкодера или короткий импульс. Упустите момент — и событие исчезнет навсегда.
Более разумный способ
Прерывание меняет сам принцип работы: вместо того чтобы задавать вопросы, вы получаете от аппаратуры сигнал сразу после изменения на выводе.
Отложите всё
Когда срабатывает прерывание, микросхема приостанавливает текущую работу цикла, запускает ваш обработчик, а затем возвращается точно к месту остановки. ⚡
Не упускайте момент
Поскольку аппаратура следит за выводом вместо вас, даже крошечный импульс запускает ваш код. Вы ловите события, которые медленный цикл мог бы пропустить.
Освободите цикл
Когда прерывания обрабатывают срочные сигналы, ваш цикл остаётся простым и отзывчивым и может спокойно выполнять более медленные задачи без постоянных проверок.
Когда опрос подходит
Прерывание нужно не всегда. Для кнопки, которую человек нажимает медленно, опрос проще и вполне подходит.
Выбирайте подходящий инструмент
Используйте прерывание, если событие быстрое, кратковременное или может произойти, пока цикл занят. В остальных случаях опрос упрощает работу.
Быстрая проверка
В какой ситуации лучше всего выбрать прерывание вместо опроса?
Повторение
Вы увидели, что опрос постоянно задаёт вопросы, а при прерывании программа получает уведомление. Используйте прерывания для быстрых событий, а опрос — для неторопливых. 🎉
Изучай C++ с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Опрос или прерывания» бесплатный?
Да — полный текст урока «Опрос или прерывания» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Arduino & IoT Academy, подпишись на CoddyKit PRO. Курс Arduino & IoT Academy содержит 4 уроков всего.
Чему я научусь в уроке «Опрос или прерывания»?
Почему некоторые события не могут ждать выполнения цикла. Ты практикуешь Arduino & IoT Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Arduino & IoT Academy?
Предыдущий опыт не требуется. Arduino & IoT Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Опрос или прерывания»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Arduino & IoT Academy?
Да. Каждый урок Arduino & IoT Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Опрос или прерывания
- attachInterrupt на контакте
- Написание безопасного ISR
- Подсчёт импульсов энкодера