Управление яркостью светодиода
Простой пример управления яркостью светодиода с помощью функции analogWrite(). AnalogWrite() использует широтно-импульсную модуляцию (ШИМ). Эффект изменения яркости достигается за счет очень быстрого, повторяющегося переключения напряжения на выходе с 0В на +5В (для некоторых плат стандартное напряжение +3.3В).
Необходимые компоненты
- контроллер Arduino
- макетная плата
- светодиод
- резистор 220 Ом
Подключение
Подключаем анод (обычно длинная ножка) светодиода через резистор сопротивлением 220 Ом к выходу номер 9 (pin 9). Катод (короткая ножка) подсоединяем напрямую к земле (Grd).
Схема
Код
В секции setup() кода устанавливаем режим выхода для вход/выхода 9 (pin 9).
Функция analogWrite(), которая циклически вызывается в теле скетча, принимает два аргумента: номер выхода и значение ширины импульса ШИМ в диапазоне от 0 до 255.
Для управление яркостью светодиода, его плавного зажигания и плавного затухания, мы будем изменять значение ширины импульса, передаваемое в функцию analogWrite(). При значение 0 светодиод выключен, при 255 светодиод светит на полную яркость. В приведенном ниже скетче ширина импульса задается переменной brightness. Шаг изменения этого значения задан переменной fadeAmount.
Для плавного изменения яркости мы вводим задержку в конце главного цикла (тела) скетча — delay(30).
/* Пример управления яркостью светодиода на выходе 9 контроллера Arduino функцией analogWrite(). */ int brightness = 0; // уставливаем начально значение яркости int fadeAmount = 5; // шаг приращения/убывания яркости void setup() { // устанваливаем пин 9 в режим выхода pinMode(9, OUTPUT); } void loop() { // устанавливаем значение широты импульса на выходе 9 // задавая яркость светодиода analogWrite(9, brightness); // измением значение в переменной для яркости brightness = brightness + fadeAmount; // при достижение крайних значений для яркости // меняем знак переменной шага приращения/убывания яркости if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; } // делаем паузу для достижения плавного наращивания/убывания яркости delay(30); }