ARDX-Montages-CIRC12

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Ce que nous faisons

.: Lumière colorée :.

.: LED RGB :.

Nous avons fait clignoter une LED et aussi contrôlé une séquence de huit LEDs. Maintenant, il est temps d'en contrôler la couleur.

En utilisant une LED RGB (Red Green Blue ou RVB pour Rouge Vert Bleu) qui est en fait 3 LEDs dans un seul boîtier, nous pouvons générer n'importe laquelle des couleurs que vous souhaitez. Nous y arrivons en faisant un mélange de couleur.

Ce qui nécessite de faire un petit retour en arrière sur nos premiers cours d'éducation artistique, ces jours durant lesquels nous expérimentions les mélanges de couleurs à partir de feuilles de cellophane colorées.

Pas de panique si vous ne vous en souvenez pas, vous trouverez ci-joint une roue des couleurs pour vous aider.

ARDX-Montages-CIRC12-table-couleur.png ARDX-Montages-CIRC12-roue-couleur.png

Le montage

Le matériel nécessaire

ARDX-circ-sheet.png

Fiche de montage CIRC-12
x1

ARDX-pin-header.png

2 Pin header
x4

ARDX-R560.png

Résistance de 560 Ohms (vert-bleu-brun)
x1

 

Tous ces éléments sont disponibles dans le Kit Ardx proposé sur shop.mchobby.be.

Schéma

Circ12-schema.png

Montage

Cir12-montage.png

Le code

Pas besoin de saisir tout le code, vous pouvez le télécharger depuis ardx.org/CODE12A.

Il ne restera plus qu'à en faire un copier/coller dans un croquis vide.

// --- Broches de la LED ---
//les 3 broches digitales des LEDs colorées
//9 = pin rouge, 10 = pin verte, 11 = pin bleue
int ledDigitalOne[] = {9, 10, 11};

//Définir ON (actif) comme LOW (parce que nous utilisons une LED RGB a anode commune
// (la broche commune connectée au +5 volts)
const boolean ON = LOW;

//Definir OFF (éteint) comme HIGH
const boolean OFF = HIGH;

// *** Couleurs prédéfinies ***
const boolean RED[]    = {ON, OFF, OFF}; // rouge
const boolean GREEN[]  = {OFF, ON, OFF}; // vert
const boolean BLUE[]   = {OFF, OFF, ON}; // bleu
const boolean YELLOW[] = {ON, ON, OFF};  // jaune
const boolean CYAN[]   = {OFF, ON, ON};  // cyan
const boolean MAGENTA[]= {ON, OFF, ON};  // magenta
const boolean WHITE[]  = {ON, ON, ON};   // blanc
const boolean BLACK[]  = {OFF, OFF, OFF};// noir

//Définir un tableau stockant les couleurs prédéfinies
//   Cela nous permettra par la suite d'afficher des couleurs aléatoires
const boolean* COLORS[] = {RED, GREEN, BLUE,YELLOW, CYAN, MAGENTA, WHITE, BLACK};

void setup(){
   //déclare les 3 pins de la LED comme OUTPUT
   for(int i = 0; i < 3; i++){
     pinMode(ledDigitalOne[i], OUTPUT);
   }
}

void loop(){
   // initialiser la couleur de la LED
   setColor(ledDigitalOne, CYAN);
   
   //randomColor()
}

void randomColor(){
   //prendre un nombre aléatoire (dans l'étendue des couleurs disponibles - soit le tableau 'colors')
   int rand = random(0, sizeof(COLORS) / 2);

   // initialiser la couleur de la LED à la
   // couleur choisie aléatoirement
   setColor(ledDigitalOne, COLORS[rand]);
   
   delay(1000); // attendre 1 seconde
}

/* Initialiser la LED à une couleur donnée
   led - un tableau à trois éléments... un élément par broches (led[0] = brocheRouge, led[1] = brocheVerte, led[2] = brocheBleue)
   color - Un tableau de trois éléments booléen. 
           color[0] = valeur pour Rouge (LOW = allumé, HIGH = éteind), 
           color[1] = valeur pour Vert,
           color[2] = valeur pour bleu.
*/
void setColor(int* led, boolean* color){
 for(int i = 0; i < 3; i++){
   digitalWrite(led[i], color[i]);
 }
}

/* Une version de setColor permettant d'utiliser des couleurs codées avec des contantes booléenne (''const boolean colors'')
*/
void setColor(int* led, const boolean* color){
  boolean tempColor[] = {color[0], color[1], color[2]};
  setColor(led, tempColor);
}

Cela ne fonctionne pas?

Voici 3 choses à essayer.

La LED reste noire ou affiche une couleur incorrecte?

Il est facile de faire une erreur avec les quatre broches de la LED si proches les unes des autres.

Essayez de vérifier si chacune des broches est bien à sa place.

c'est trop "rouge"!

La diode rouge de la LED RGB pourrait être plus brillante que les deux autres.

Pour ajuster la balance des couleurs, essayez d'utiliser une résistance plus grande (ou deux résistances montées en série).

Envie de plus ?

(brancher sans se retenir)

Si vous voulez en faire un peu plus, pourquoi ne pas allez jeter un oeil sur les petits plus et extra disponibles shop.MCHobby.be]

Faire encore mieux

Plus de couleurs

J'imagine que vous êtes moins qu'impressionné par la couleur cyan rayonnante sous vos yeux.

Pour afficher une couleurs différentes, changer la couleur dans votre code avec l'une des couleurs disponibles.

setColor(ledDigitalOne, CYAN);

par

 setColor(ledDigitalOne, **AUTRE_COULEUR**);

Choisissez l'une des couleurs disponibles dans le tableau COLORS.

Afficher les couleurs aléatoirement

Nous pouvons bien entendu faire plus qu'afficher constamment la même couleur.

Pour voir comment nous pouvons faire des cycles entre différentes couleurs aléatoires modifiez le code de la fonction loop() vers :

void loop(){
   //setColor(ledDigitalOne, CYAN);
   randomColor()
}

Contrôle analogique des couleurs

Passer d'une couleur à l'autre est amusant. Mais les LEDs RGBs ne montrent tout leur potentiel que lorsque l'on fait des mélanges de couleurs à l'aide du contrôle analogique.

En utilisant la modulation de largeur d'impulsion (PWM) il est possible de produire presque n'importe quelle couleur et de faire des fondus d'une couleur à l'autre.

Malheureusement, le code utilisé pour faire cela est trop long pour cette section.

Pour un exemple de programme, téléchargez le code depuis :

Plus, plus et encore plus

Plus d'information, où poser vos autres questions:

ardx.org/CIRC12 (anglais)

Internet

.:téléchargement:.

LA fiche de montage est disponible sur ardx.org/BBLS12A

.: Vidéo :.

La vidéo du montage est disponible sur ardx.org/VIDE12 (anglais)


Tutoriel/Manuel traduit par Meurisse D. pour MCHobby.be licence Creative Commons BY-SA.

Crédit de traduction
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (shop.MCHobby.be) - Vente de kit et composants » et ce quelque soit le média utilisé.

Utilisation commerciale
L'utilisation commercial de cette traduction (y compris sur site produisant des revenus par l'intermédiaire de publicité), même partielle, est soumise à redevance (license fee).


Le présent manuel a été traduit et autorisé à la vente avec l'aimable autorisation conjointe de Oomlout (www.oomlout.com) et d'AdaFruit (www.adafruit.com).

Produit sous licence Creative Commons BY-SA License and available for download: ardx.org/src/