Регулирование яркости светодиода

Сегодня мы будем использовать функцию analogWrite() для регулирования яркости светодиода. АnalogWrite() использует широтно-импульсную модуляцию (ШИМ), включая и выключая цифровые выходы очень быстро. 

Аппаратное обеспечение:

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

Электрическая цепь:

Соедините анод (длинный вывод) вашего светодиода с цифровым выводом 9 Arduino через резистор 220 Ом. Соедините катод (короткий вывод) с землей (GND) Arduino. 

плата arduino

Схема:

схема

Код:

В функции setup() нужно назначить вывод 9 выходом.
Функция analogWrite() которую вы будете использовать в основном цикле имеет два аргумента: первый говорит функции какой вывод использовать, во второй записывают значение для ШИМ. 
Для того чтобы плавно увеличить яркость светодиода, а потом плавно уменьшить вам нужно сначала увеличивать значение ШИМ от 0 (светодиод выключен) до 255 (максимальная яркость), а потом наоборот. В нашей программе переменная отвечающая за значение ШИМ будет называться brightness. В каждом цикле эта переменная будет изменятся на значение fadeAmount. 
Как только brightness достигнет значения 255 или 0 fadeAmount изменит свой знак. Таким способом мы сможем поменять увеличения яркости на понижение и наоборот.
analogWrite() изменяет значение ШИМ очень быстро, потому нужна задержка для контроля скорости изменения яркости. Вы можете сами изменять значения задержки и смотреть как это скажется на работе. 

Полный текст программы:

/*

 Этот пример показывает как изменять яркость светодиода на выводе 9

 используяфункцию analogWrite().

 */

 

int led = 9; //выводсветодиода 9

int brightness = 0;    // переменная отвечающая за яркость

int fadeAmount = 5;    // переменная, которая задает скорость изменения яркости за цикл

 

// настройки:

void setup()  {

  // назначим вывод 9 выходом:

  pinMode(led, OUTPUT);

}

 

// основной цикл:

void loop()  {

  // устанавливаем яркость светодиода на выводе  9:

  analogWrite(led, brightness);   

 

  // изменим значение яркости для следующего прохода цикла:

  brightness = brightness + fadeAmount;

 

  // поменяем направление изменения яркости:

  if (brightness == 0 || brightness == 255) {

    fadeAmount = -fadeAmount ;

  }    

  // ждем 30 миллисекунд для наблюдения эффекта диммирования:   

  delay(30);                           

}




Собирайте arduino своими руками - полный каталог плат