/*------------------------------------------------*/
const byte button = 3; // вывод №2 Arduino , к нему подключена кнопка
const byte led = 1; // вывод №1 Arduino ,к нему подключён светодиод
volatile boolean state = false; // состояние светодиода, false - ВЫКЛ, true - ВКЛ
/*------------------------------------------------*/
void setup() {
pinMode(button, INPUT); // установка направления работы порта для кнопки как вход
pinMode(led, OUTPUT); // установка направления работы порта для светодиода как выход
attachInterrupt (3, button_press, RISING); // // установка прерывания №0 (цифровой вывод 2)
// по изменению сигнала с низкого уровня (0 В) на высокий уровень (5 В), т.е. по переднему фронту сигнала с кнопки.
// при появлении на порте высокого уровня (5 В) сработает прерывание и запустится обработчик прерывания -
// функция button_press
}
/*------------------------------------------------*/
void loop() {
digitalWrite (led, state); // зажигаем/гасим светодиод
}
/*------------------------------------------------*/
void button_press () {
static unsigned long millis_prev;
if (millis() - 100 > millis_prev) state = !state; // инвертируем состояние светодиода (false - ВЫКЛ, true - ВКЛ) + защита от дребезга контактов
millis_prev = millis();
}
/*------------------------------------------------*/