38 lines
1.5 KiB
C++
38 lines
1.5 KiB
C++
// определяем пины, к которым подключена кнопка и ШИМ
|
||
#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;
|
||
}
|
||
}
|