Настоящего аналогового выхода в данном микроконтроллере нет, но на выводы 3, 5, 6, 9, 10, 11 можно подавать сигнал с широтно-импульсной модуляцией (ШИМ). Здесь мы не будем разбирать точные, математически строгие формулировки, а попробуем проще всего объяснить, о чем идет речь.
Мы уже научились устанавливать на выходе микроконтроллера одно из двух значений – 0, либо +5 Вольт, и какие-то другие значения постоянного напряжения микроконтроллер формировать не может. Но что делать, если мы захотим получить +2,5 Вольта? Строгого решения этой задачи у нас не получится, но можно с большой частотой переключать выход из низкого в высокое состояние и обратно. В таком случае, светодиод, подключенный к такому выводу, будет гореть в половину яркости (на самом деле он будет очень часто мигать), а среднее значение сигнала за период будет +2,5 Вольта. Меняя соотношение между временем нахождения выхода в высоком и низком состоянии, можно получать различные средние значения напряжения.
Хорошая новость заключается в том, что нам предоставляется функция analogWrite, а все сложности реализации скрыты от наших глаз. Функция принимает 2 параметра – номер вывода (не забываем, что ШИМ сигнал можно выводить только на выводы 3, 5, 6, 9, 10, 11), и величину, пропорциональную среднему значению напряжения. 0 соответствует 0 Вольтам, а 255 - +5 Вольтам.
Таким образом, чтобы получить на 3м выводе +2,5 Вольта, а на 5м +1 Вольт, мы сделаем так:
analogWrite(3, 128); // 255/2 = 128
analogWrite(5, 51); // 255/5 = 51
Чтобы визуально наблюдать изменение выходного сигнала, нам потребуется подключить внешний светодиод, поскольку 13й вывод, к которому подключен встроенный, не поддерживает ШИМ. Светодиод нужно подключить через ограничительный резистор номиналом от 200 до 1500 Ом, и с соблюдением полярности – иначе он просто не загорится. Обычно у светодиода один из выводов чуть длиннее – это анод (плюс), а второй короче – эта катод (минус). Кроме того, со стороны катода пластиковый обод немного срезан.
Соединение должно быть таким – 9й вывод микроконтроллера соединен с резистором, второй вывод резистора соединен с анодом светодиода, катод светодиода соединен «землей» (любой из выводов, обозначенный Gnd).
Загрузим стандартный пример "Fading" через меню File \ Sketchbook \ Examples \ Analog \ Fading.
int ledpin = 9; //светодиод подключим к 9 контакту
void setup()
{
pinMode(ledpin, OUTPUT); //устанавливаем 9 контакт в режим вывода
}
void loop()
{
for(value = 0 ; value <= 255; value+=5) //плавно зажигаем светодиод
{
analogWrite(ledpin, value); //выставляем значение
delay(30); //небольшая пауза
}
for(value = 255; value >=0; value-=5) //плавно гасим
{
analogWrite(ledpin, value);
delay(30);
}
}