Suite de l'article "réalisation d'un arbre de noel animé partie 1/2"
Pour allumer nos leds , il va être nécessaire de programmer l'arduino.
J'ai fais le choix de cabler les leds sur des sorties .Elles seront pilotées en mode analogique.
La valeur numérique peut varier entre 0 et 255 . 0 correspond à un 0V sur la borne de la sortie sélectionnée : la led est éteinte. 255 correspond à 5V . La led est allumée avec sa luminosité maximale . L'avantage de ce type de sortie , c'est que l'on peut faire varier l'intensité lumineuse de la led . Avec une sortie digitale , on ne peut pas , on est limité à 2 états (0 éteint , 1 allumé).
Les broches ou le mode PWM est disponible sont : 3 ,5 ,6 ,9 ,10 ,11.
La programmation :
Dans un 1er temps , il va falloir déclarer l'affectation des broches en mode sortie.
// Projet Christmas Tree 5 Leds
// PETIT Olivier
// 09/11/2015
// V1.00
int ledPin1 = 3; // la led 1 sera affectée à la broche n°3
int ledJPin2 = 5;
int ledPin3 = 6;
int ledJPin4 = 9;
int ledPin5 = 10;
void setup() {
pinMode(ledPin1, OUTPUT); //la broche n°3 est déclarée comme une sortie
pinMode(ledJPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledJPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
}
L'affectation des broches est terminée . Maintenant nous allons voir la boucle principale qui permet d'allumer nos leds.
void loop() {
// la 1ere séquence On allume une led de haut en bas en eteignant la précédente
// le cycle est répété 10 fois
for (int i=0; i <= 10; i++){
sequence(255,0,0,0,0,150); // Appelle de la fonction sequence
// décomposition de la ligne sequence
// sequence(led1=255,led2=0,led3=0,led4=0,led5=0, timer =150);
// sur cette ligne seule la led1= allumée pendant 150ms
sequence(0,255,0,0,0,150);
sequence(0,0,255,0,0,150);
sequence(0,0,0,255,0,150);
sequence(0,0,0,0,255,150);
}
// la 2eme séquence : cycle allumage alternée des leds rouges et jaunes
// le cycle est répété 25 fois
for (int i=0; i <= 25; i++){
sequence(255,255,255,255,255,200);
sequence(0,0,0,0,0,200);
}
/* la 3eme séquence : on allume les leds de bas en haut avec une nuance les leds s'éteignent progressivement (valeur = 125)
le cycle est répété 10 fois */
for (int i=0; i <= 10; i++){
sequence(0,0,0,0,255,150);
sequence(0,0,0,255,125,150);
sequence(0,0,255,125,0,150);
sequence(0,255,125,0,0,150);
sequence(255,125,0,0,0,150);
}
}
/*Séquence qui permet de diminuer le nombre de lignes dans le programme et ainsi
simplifier le fonctionnement . Cette partie de programme ne doit pas être modifiée .*/
int sequence(int l1,int l2,int l3,int l4,int l5,int d1){
analogWrite(ledPin1,l1); // Led1
analogWrite(ledJPin2,l2); // Led2
analogWrite(ledPin3,l3); // Led3
analogWrite(ledJPin4,l4); // Led4
analogWrite(ledPin5,l5); // Led5
delay(d1); // Timer
}
Une petite vidéo pour illustrer l'allumage des leds.
Dans la boucle Loop avec un peu d'imagination on peut personnaliser facilement les cycles d'allumage des Leds que l'on désire.
Ex : Pour faire clignoter 20x la 3eme Led toutes les 200 ms il suffit d'insérer le code :
for (int i=0; i <= 20; i++){
sequence(0,0,255,0,0,200); // On allume uniquement la 3eme led pendant 200ms
sequence(0,0,0,0,0,200); // On éteint toutes les leds pendant 200ms
}
Voilà un petit exemple qui permet de s'initier à l'Arduino.
A vous d'essayer maintenant....