Цитата Сообщение от Chip Посмотреть сообщение
Привожу два примера прерываний.

Ниже пример кода для Arduino, прерывание по таймеру
В этом примере процедура flash_led будет выполнятся каждый раз по истечению 0,5 сек.
PHP код:
//Выполнение процедуры по прерыванию таймеру.
#include <MsTimer2.h>
  
static boolean output HIGH;
  
void flash_led() //обработчик прерывания
{
  
digitalWrite(13, (output==HIGH) ? output=LOW output=HIGH);
}

void setup() {
  
pinMode(13HIGH);

  
MsTimer2::set(500flash_led); // 500ms период
  
MsTimer2::start();  //включить таймер
}

void loop() 
{
//.....

Еще один пример работы аппаратного прерывания.
В данном примере при изменении напряжения на ножке D2
каждый раз будет выполнятся процедура int_on
Таких входов в Arduino всего 2 (D2,D3)
И несколько вариантов настройки событий
LOW - to trigger the interrupt whenever the pin is low,
CHANGE - to trigger the interrupt whenever the pin changes value
RISING - to trigger when the pin goes from low to high,
FALLING - for when the pin goes from high to low.

PHP код:
#define PinA  2
static boolean output HIGH;

void setup() 
{   
  
pinMode(PinAINPUT); 
  
digitalWrite(PinAHIGH);     // подключить подтягивающий резистор
  
attachInterrupt(0int_onCHANGE);  // настроить прерывание interrupt 0 на pin 2


void loop()
{
//........
}

// обработка прерывания
void  int_on()
{
digitalWrite(13, (output==HIGH) ? output=LOW output=HIGH);

Подскажите
1) где взять библиотеку MsTimer2.h, которой вы пользуетесь.
2) где взять описание комманд типа PortA, DDRD
3) в языке для Ардуино я не нашел описания оператора "?". Вы его применяете в такой связке - digitalWrite(13, (output==HIGH) ? output=LOW : output=HIGH);. Это очень удобный оператор, но где можно увидетьполный список операторов и комманд Ардуины?