Arduino — различия между версиями
Avp (обсуждение | вклад) (Добавил раздел "Подключение оборудования") |
Avp (обсуждение | вклад) (→Подключение оборудования: Поправил ссылку) |
||
Строка 21: | Строка 21: | ||
= Подключение оборудования = | = Подключение оборудования = | ||
− | * [[Arduino/ | + | * [[Arduino/MT-16S2H|ЖК-дисплей МЭЛТ MT-16S2H]] |
[[Категория:База знаний]] | [[Категория:База знаний]] |
Версия 11:53, 8 апреля 2016
Содержание
Прерывания
Допустим, мы сделали "бегущий огонь" и теперь хотим прикрутить кнопку для управления режимом светодиодов. Самым прямолинейным решением, на первый взгляд, является считвание значение кнопки в начале loop
. Собираем схему, добавляем считывание значения с цифрового порта и логику переключения режимов. Всё бы хорошо, но наше кратковременное нажатие на кнопку обычно приводит к многократному считыванию значения; как следствие, логика не работает, как должна.
Плюс, добавляя кнопку в наш проект, мы добавляем в наш проект неопределённость -- нажатие на кнопку может возникнуть в любой момент, и (если всё делать по-нормальному) мы должны обрабатывать это событие в тот момент, как оно возникла. В таких случаях говорят, что событие возникает асинхронно (по отношению к нашей программе.)
Для правильного решения данной задачи необходимо использовать прерывания.
Реакция на внешние события
Для обработки внешнего асинхнонного события нам потребуются как минимум две вещи:
- Написать обработчик события
- Связать обработчик с внешним событием
TODO
Прерывания по таймеру
TODO
См. также
- We interrupt this program to bring you an Arduino interrupt tutorial (англ.)
- Microcontroller tutorial series: AVR and Arduino timer interrupts (англ.)