Подключите длинные, положительные контакты (аноды) 12 светодиодов к цифровым выводам 2-13 через токоограничивающие резисторы 220 Ом. Подключите короткие, отрицательные контакты (катоды) на землю.
Schematische Darstellung
Programm
В функции setup () программы, for () loop используется для настройки цифровых выходов 2-13 Mega на вывод.
Далее, в функции loop () программы, используется три вложенных цикла for () loops.
Первый
for (int thisPin =lowestPin; thisPin ≤ highestPin; thisPin++)
проходит через каждый индикатор по одному, с первого контакта до последнего. До этого, когда разрешено переходить с одного контакта к следующему, две вещи должны быть выполнены. Во-первых, вы подсвечиваете отдельные светодиоды с помощью этого кода:
for (int brightness = 0; brightness < 255; brightness++) {
analogWrite (thisPin, brightness);
delay (2);
}
При каждом проходе через цикл выше, переменная увеличивает яркость на одно значение, и это значение записывается на выходе выбраного контакта в главном цикле. Когда на контакте максимальное значение ШИМ (255), следующий цикл гасит:
for (int brightness = 255; brightness >= 0; brightness–) {
analogWrite (thisPin, brightness);
delay (2);
}
Этот цикл вычитает из значение переменной яркости, затемняя светодиод. После достижения минимума, главным for () loop, и программа переходит к следующему светодиоду, повторяя все шаги.
/ *
Мега analogWrite () пример
Схема:
* Светодиоды: контакты от 2 до 13 и к земле.
*/
// Эти константы не изменяются. Они используются для обозначения выводов
const int lowestPin = 2;
const int highestPin = 13;
void setup () {
//настраивает контакты на вывод:
for (int thisPin =lowestPin; thisPin ≤ highestPin; thisPin++) {
pinMode (thisPin, OUTPUT);
}
}
void loop () {
// итерация по выводам:
for (int thisPin =lowestPin; thisPin ≤ highestPin; thisPin++) {
// зажигание светодиода:
for (int brightness = 0; brightness < 255; brightness++) {
analogWrite (thisPin, brightness);
delay (2);
}
// светодиод гаснет:
for (int brightness = 255; brightness >= 0; brightness–) {
analogWrite (thisPin, brightness);
delay (2);
}
// пауза между индикаторами:
delay (100);
}
}