S'amuser avec 8 LED

Nous avons réussi a faire clignoter une LED; maintenant le moment est venu d'aller plus loin. Nous allons en connecter huit. Nous aurons aussi une occasion de pousser un peu l'Arduino en créant des séquences lumineuses variées. Ce circuit est aussi un bon marchepied pour apprendre à écrire vos propres programmes et se faire une idée de la façon dont fonctionne l'Arduino.

En même temps que le contrôle des LED nous commençons à voir quelques méthodes de programmation pour que vos programmes restent courts:

COMPOSANTS

SCHEMA du CIRCUIT

Circuit Layout

MONTAGE du CIRCUIT

Assembly Diagram

Vidéo de l'assemblage.

Allumer 4 LED

Montage avec 4 LED par le traducteur

CODE

Vous pouvez trouver ce code dans 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);
});

Nous utilisons des tableaux pour conserver la trace de la liste des objets broches aussi bien que LED que nous créons. On peut utiliser des boucles for pour itérer sur (donc faire quelque chose pour chaque élément) les tableaux.

Nous avons structuré le programme en le découpant en fonctions (allOn, allOff et oneAfterAnother).

Nous utilisons la méthode board.wait pour programmer le comportement à certains moments. Elle prend deux paramètres - le nombre de millisecondes à attendre, et une fonction qui définit le code à exécuter après avoir attendu durant le délai spécifié.

DEPANNAGE

Quelques LED n'arrivent pas à l'allumer

Il est facile d'insérer une LED à l'envers. Vérifiez les LED qui ne fonctionnent pas et assurez-vous qu'elles sont à l'endroit.

Rupture de séquence

Avec huit fils, il est facile d'en intervertir une paire. Vérifiez que la première LED est enfoncée dans le port 2 et chaque port à la suite.

Rédémarrage

Il est facile de mal positionner un fil sans y prendre garde. Enlever tout et repartir à zéro est souvent plus facile que d'essayer de retrouver l'origine du problème.

ETENDRE LE CODE

Code désactivé en commentaire

A la fin du programme vous verrez deux lignes commentées (le symbole // au début de ces lignes les désactive). Elles représentent un comportement alternatif (toutes les LED allumées à la fois et ensuite éteintes). Décommentez ces lignes et commentez les deux dernières lignes du programme avec // pour intervertir le comportement du programme.

Animations supplémentaires

Fatigué de l'animation par défaut? Essayez de modifier le temps de la fonction oneAfterAnother, ou écrivez votre propre fonction d'animation: les fonctions  board.loop et board.wait vous aideront à programmer l'allumage des LED (ou les pulser, ou changer la luminosité) à des moments prédéfinis.

Désorienté?

Ne vous en faites pas! Cet exercice sert à explorer les possibilités aussi il y a pas mal de choses à prendre en compte. Nous reviendrons à un code plus simple dans le prochain couple d'exercices.


Licence Common Creative. Traduit de l'anglais par Scriptol.fr à partir du tutoriel d'Anna Gerber. Copie et modification autorisées sous réserve de conserver cette notice y compris le lien sur la page originale.