Сегодня мы будем управлять яркостью светодиода с помощью ШИМ каналов.
Схема подключения на макетной плате:
Интенсивность свечения будет регулироваться от 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 миллисекунд. }
Обсуждение