void setup() {
// Настройка пина 9 как выход
pinMode(9, OUTPUT);
// Настройка таймера/счетчика 1
TCCR1A = 0;
TCCR1B = 0;
// Режим Fast PWM с TOP = ICR1
TCCR1A |= (1 << WGM11);
TCCR1B |= (1 << WGM13) | (1 << WGM12);
// Неинверсный режим на выводе OC1A
TCCR1A |= (1 << COM1A1);
// Предделитель N = 64
TCCR1B |= (1 << CS11) | (1 << CS10);
// Максимальное значение счетчика (TOP)
ICR1 = 499; // Частота PWM = 500 Гц
}
void loop() {
// Плавное увеличение яркости от минимальной до максимальной
for (int i = 0; i <= ICR1; i++) {
OCR1A = i; // Изменение duty cycle
delay(10); // Пауза для видимого эффекта
}
delay(100);
// Плавное уменьшение яркости от максимальной до минимальной
for (int i = ICR1; i >= 0; i--) {
OCR1A = i; // Изменение duty cycle
delay(10); // Пауза для видимого эффекта
}
delay(100);
}