Большинство информации можно найти на страницах arduino.cc по ходу текста буду добавлять ссылки, где я нашел информацию.
Переходим к прерываниям.
В случае, когда основная программа имеет сравнительно небольшой размер, все события можно обрабатывать в цикле основной программы, но что если программа большая? Если ее размер множество строк, да еще и с временными задержками? В таком случае, возможна ситуация когда внешние нажатия на кнопку могут быть не обработаны или придется долго держать кнопку нажатой. А что если это не кнопка, а внешнее устройство? Чтоб преодолеть эти сложности необходимо использовать прерывания — как только было вызвано прерывание, основной цикл программы будет приостановлен и микроконтроллер начнет исполнение кода функции, которая соответствует прерыванию, а после завершения продолжится выполнение программы там где она была до этого приостановлена.
На платах Arduino есть контакты, используются для сигнализации о прерывании. Ниже в таблице указаны номера прерываний и соответствующие им контакты на плате.
Платы | Контакты | |||||
int0 | int1 | int2 | int3 | int4 | int5 | |
Arduino Uno | 2 | 3 | ||||
Arduino Mega | 2 | 3 | 21 | 20 | 19 | 18 |