// определяем пины, к которым подключена кнопка и ШИМ #define BUTTON_PIN 2 #define PWM_PIN 9 // определяем регистры ШИМ #define TCCR1A_REG 0x80 #define TCCR1B_REG 0x81 #define OCR1A_REG 0x88 void setup() { // настраиваем пин кнопки на вход с подтягивающим резистором pinMode(BUTTON_PIN, INPUT_PULLUP); // настраиваем пин ШИМ на выход pinMode(PWM_PIN, OUTPUT); // устанавливаем настройки ШИМа TCCR1A = 0x82; // настройки регистра TCCR1A (включаем Fast PWM, устанавливаем режим non-inverting) TCCR1B = 0x11; // настройки регистра TCCR1B (выбираем источник тактирования и устанавливаем prescaler) OCR1A = 0x0000; // устанавливаем начальное значение ШИМа } void loop() { // считываем состояние кнопки bool buttonState = digitalRead(BUTTON_PIN); // если кнопка нажата, включаем ШИМ if (buttonState == LOW) { // устанавливаем значение ШИМа OCR1A = 0x0FFF; } // если кнопка не нажата, выключаем ШИМ else { // устанавливаем значение ШИМа в 0 OCR1A = 0x0000; } }