Регулирование яркости светодиода
Сегодня мы будем использовать функцию analogWrite() для регулирования яркости светодиода. АnalogWrite() использует широтно-импульсную модуляцию (ШИМ), включая и выключая цифровые выходы очень быстро.
Аппаратное обеспечение:
- плата Arduino
- макетная плата
- светодиод
- резистор 220 Ом
Электрическая цепь:
Соедините анод (длинный вывод) вашего светодиода с цифровым выводом 9 Arduino через резистор 220 Ом. Соедините катод (короткий вывод) с землей (GND) 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 своими руками - полный каталог плат

