Управление яркостью светодиода

Простой пример управления яркостью светодиода с помощью функции analogWrite(). AnalogWrite() использует широтно-импульсную модуляцию (ШИМ). Эффект изменения яркости достигается за счет очень быстрого, повторяющегося переключения напряжения на выходе с 0В на +5В (для некоторых плат стандартное напряжение +3.3В).

Необходимые компоненты

  • контроллер Arduino
  • макетная плата
  • светодиод
  • резистор 220 Ом

Подключение

Подключаем анод (обычно длинная ножка) светодиода через резистор сопротивлением 220 Ом к выходу номер 9 (pin 9). Катод (короткая ножка) подсоединяем напрямую к земле (Grd).

Схема

Arduino подключение светодиода

Код

В секции 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);                            
}

Смотрите также