Мы не выдаем Китай за Италию. Платы от российского производителя по сниженным ценам.

Новинки: Power DC Shield, Светодиодная лента, Freeduino Mini, модули USB Host, Relay.

Настоящего аналогового выхода в данном микроконтроллере нет, но на выводы 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 value = 0;                  //здесь храним значение яркости
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);
  }
}
Программа очень простая, и по исходному тексту и комментариям все должно быть понятно. В программе используется циклы (оператор for). В первом цикле переменная value изменяется от 0 до 255 с шагом 5, во втором – от 255 до 0 с тем же шагом 5.