Сегодня мы будем управлять яркостью светодиода с помощью ШИМ каналов.
Схема подключения на макетной плате:
Интенсивность свечения будет регулироваться от 0 до 254 едениц, где 0 - вчетодиод выклчюен, а 254 - горит максимально (Например при 127 яркость будет на 50%).
Для этого нам понабодится:
Для подключения светодиода необходимо использовать резистор. Номинал резистора подбирается для каждого светодиода индивидуально, в зависимости от его рабочего напряжения и тока. Обычно резистор в 1 кОм. Можно использовать как универсальный вариант.
Управление реализуем с помощью двух тактовых кнопок. Подключать тактовые кнопки необходимо через подтягивающие резисторы (К земле, GND), для защиты от статических наводок (Ложные срабатывания кнопок от одного лишь касания и тд.). Номинал может быть различный. Рекомендуем вам использовать резисторы 10 кОм - 100 кОм.
Код программы:
int led = 11; // Номер Pin к которому подключен диод
int brightness =0; // Переменная в которой хранится уровень яркости (От 0 до 254)
int buttonPlus=9; // Номер Pin к которому подключена кнопка
int buttonMinus=10; // Номер Pin к которому подключена кнопка -
void setup() {
pinMode(led, OUTPUT); // Порт 11 (led) будет работать как Выход.
}
void loop() { // Этот цикл будет выполняться бесконечное количество раз.
if (digitalRead(buttonPlus) == HIGH) {
brightness += 5;
} // Делаем проверку, если вход под номером 9 (buttonPlus) имеет состояние 5 В. Увеличиваем значение переменной яркости на 5 единиц.
if (digitalRead(buttonMinus) == HIGH) {
brightness -= 5;
} // Делаем проверку, если вход под номером 10 (buttonMinus) имеет состояние 5 В. Уменьшаем значение переменной яркости на 5 единиц.
brightness = constrain(brightness, 0, 254); // Эта функция контролирует, что бы переменная brightness не стала больше 254 и меньше 0, если значение вылазит за границу то функция 0 или 254
analogWrite(led, brightness); // Устанавливаем состояние яркости для светодиода
delay(50); // Пауза 50 миллисекунд.
}

Обсуждение