#include <TimerOne.h>
const int led = 9; // вывод со светодиодом
int ledState = LOW; //состояние светодиода
volatile unsigned long blinkCount = 0; // используйте volatile для общих переменных
void setup(void)
{
pinMode(led, OUTPUT);
Timer1.initialize(150000);
Timer1.attachInterrupt(blinkLED); // вызывать blinkLED каждые 0.15 сек.
Serial.begin(9600);
}
void blinkLED(void)
{
if (ledState == LOW)
{
ledState = HIGH;
blinkCount = blinkCount + 1; //количество миганий
} else
{
ledState = LOW;
}
digitalWrite(led, ledState);
}
void loop(void)
{
unsigned long blinkCopy; // хранит копию blinkCount
noInterrupts(); //запрещение прерывания при доступе к общей переменной
blinkCopy = blinkCount;
interrupts();
Serial.print("blinkCount = ");
Serial.println(blinkCopy);
delay(100);
}