Код:
volatile boolean flag=0;
ISR(TIMER1_COMPA_vect){
PINB&(1<<PB2)?PORTB&=~1<<PB2:PORTB|=1<<PB2;
if(flag){
OCR1A>50?OCR1A--:OCR1A=50;
flag=0;
}
}
void setup(){
DDRB|=1<<PB2;//ногодрыг пином 10
TCCR1A=0;
TCCR1B=0;
TIMSK1=0;
TCCR1B|=1<<WGM12;
TCCR1B|=1<<CS10;
TIMSK1|=1<<OCIE1A;
OCR1A=1000;
}
void loop(){
static uint32_t ms=millis();
if(millis()-ms>=5){
ms=millis();
flag=1;
}
}
Кино: жирное будет ссылка на Ютуб, чуть позже..