Управление яркостью светодиода
Простой пример управления яркостью светодиода с помощью функции 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);
}


