Развлечения с 8 светодиодами
Нам удалось заставить мигать один светодиод; теперь пришло время взять его дальше. Подключим восемь из них. У нас также будет шанс немного подтолкнуть Arduino, создавая различные последовательности света. Эта схема также является хорошей отправной точкой для обучения написанию собственных программ и получения представления о том, как работает Arduino.
Наряду с управлением светодиодами, мы начнем видеть некоторые методы программирования, чтобы ваши программы были короткими:
- for loops - используется, когда требуется выполнить блок кода несколько раз
- массивы - используются для облегчения управления переменными (они представляют собой список переменных)
- functions - блоки кода, которые можно вызывать.
КОМПОНЕНТЫ
- 5 мм x 8 LED
- Резистор 330 Ом (оранжево-оранжево-коричневый) x 8
- Соединительные провода .
ПРИНЦИПИАЛЬНАЯ СХЕМА

СБОРКА ЦЕПИ
Монтаж с 4 светодиодами с помощью преобразователя
КОДЕКС
Этот код можно найти в CIRC02-code-leds.js
var j5 = require("johnny-five");
var board, leds=[], ledPins = [2,3,4,5,6,7,8,9];
board = new j5.Board();
board.on("ready", function() {
// initialiser les LEDs avec une boucle for
for (var i = 0; i < ledPins.length; i++){
var myLed = new j5.Led(ledPins[i]);
leds.push(myLed);
}
function allOn(){
for (var i = 0; i < leds.length; i++) {
leds[i].on();
}
}
function allOff(){
for (var i = 0; i < leds.length; i++) {
leds[i].off();
}
}
function oneAfterAnother() {
var delay = 1;
board.counter = 0;
for (var i = 0; i < leds.length; i++) {
var led = leds[i];
board.wait(delay,function(){
console.log(this.counter + " on");
leds[this.counter].on();
});
board.wait(delay + 200,function(){
console.log(this.counter + " off");
leds[this.counter].off();
this.counter = (this.counter + 1) % leds.length;
});
delay += 500;
}
}
// allOn();
// board.wait(1000,allOff);
oneAfterAnother();
board.loop(4500, oneAfterAnother);
});
Мы используем массивы для отслеживания списка созданных нами pin и LED объектов. Мы можем использовать for loops для перебора (и, таким образом, сделать что-то для каждого элемента) массивов.
Мы структурировали программу, разделив ее на функции (allOn, allOff и oneAfterAnother).
Мы используем метод board.wait для программирования поведения в определенные моменты времени. Требуется два параметра: количество миллисекунд ожидания и функция, определяющая код для выполнения после ожидания указанного количества времени.
ПОИСК НЕИСПРАВНОСТЕЙ
Некоторые светодиоды не загораются
Вставить светодиод вверх ногами несложно. Проверьте, не работают ли светодиоды, и убедитесь, что они расположены правильно .
Перерыв в последовательности
Благодаря восьми проводам легко поменять пару местами. Проверьте, что первый светодиодный индикатор подключен к порту 2 и последовательно к каждому порту.
Перезапуск
Легко перепутать провод, не заметив. Убрать все и начать все с нуля зачастую проще, чем пытаться отследить источник проблемы.
РАСШИРИТЬ КОДЕКС
Код комментирования
В конце программы вы увидите две комментированные строки (символ//в начале этих строк отключает их). Они представляют альтернативное поведение (все светодиодные индикаторы загораются одновременно и затем выключаются). Раскомментируйте эти строки и закомментируйте последние две строки программы с помощью//, чтобы поменять местами поведение программы .
Дополнительные анимации
Надоела анимация по умолчанию? Попробуйте изменить тайминг функции oneAfterAnother, или напишите свою функцию анимации: функции board.loop и board.wait помогут запланировать включение светодиодов (или пульс, или изменение яркости) в заранее определенные моменты времени.
Запутались?
Не беспокойтесь! Это упражнение только изучает возможности, так что есть довольно много, чтобы рассмотреть. К более простому коду мы вернемся в следующей паре упражнений.