Развлечения с 8 светодиодами

Нам удалось заставить мигать один светодиод; теперь пришло время взять его дальше. Подключим восемь из них. У нас также будет шанс немного подтолкнуть Arduino, создавая различные последовательности света. Эта схема также является хорошей отправной точкой для обучения написанию собственных программ и получения представления о том, как работает Arduino.

Наряду с управлением светодиодами, мы начнем видеть некоторые методы программирования, чтобы ваши программы были короткими:

КОМПОНЕНТЫ

ПРИНЦИПИАЛЬНАЯ СХЕМА

Circuit Layout

СБОРКА ЦЕПИ

Assembly Diagram

Allumer 4 LED

Монтаж с 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 помогут запланировать включение светодиодов (или пульс, или изменение яркости) в заранее определенные моменты времени.

Запутались?

Не беспокойтесь! Это упражнение только изучает возможности, так что есть довольно много, чтобы рассмотреть. К более простому коду мы вернемся в следующей паре упражнений.