Afficher/Masquer les commentaires
La LED rouge est reliée à la borne 9, la LED verte est reliée à la borne 10 et la LED bleu est reliée à la borne 11.
L'usage des constantes ROUGE
, VERT
et BLEU
au lieu de 9, 10 et 11
rend l'écriture et la lecture du programme plus facile.
const int ROUGE=9;
const int VERT=10;
const int BLEU=11;
La constante TEMPO
permet de régler la vitesse
de transition entre les couleurs par un temps exprimé en ms.
const int TEMPO=10;
La fonction setup
est obligatoire dans tout programme Arduino.
Elle est appelée une fois au démarrage du module.
C'est dans cette fonction que nous mettons les différentes instructions d'initialisation.
void setup(){
Les broches qui commandent les LED sont mises en mode OUTPUT
pinMode(ROUGE,OUTPUT);
pinMode(VERT,OUTPUT);
pinMode(BLEU,OUTPUT);
La couleur de départ est bleue : on définit l'intensité de bleu au maximum et les intensités des couleurs rouge et verte à 0.
analogWrite(ROUGE,0);
analogWrite(VERT,0);
analogWrite(BLEU,255);
}
La fonction loop
est également obligatoire dans tout programme Arduino.
Elle est exécutée en boucle juste après l'exécution de la fonction setup
.
void loop(){
De bleu à magenta
La boucle est exécutée pour i
variant de 0
à 255
inclus par pas de 1
.
A chaque tour la tension sur la broche de la LED rouge est réglée sur la valeur définie par i
,
et une pause de la durée TEMPO
est réalisée (10 ms, puisque TEMPO=10
).
La LED rouge va passer de éteinte à sa luminosité maximum en 256 étapes qui durent chacune 10 ms. Ainsi un rouge de plus en plus intense va se "mélanger" avec le bleu jusqu'à l'obtention du magenta en environ 2,5 s.
Toutes les autres transitions fonctionnent sur le même principe.
On notera que :
i++
est un raccourci pour i=i+1
i--
est un raccourci pour i=i-1
for(int i=0;i<=255;i++){
analogWrite(ROUGE,i);
delay(TEMPO);
}
//Magenta -> rouge
for(int i=255;i>=0;i--){
analogWrite(BLEU,i);
delay(TEMPO);
}
//Rouge -> Magenta
for(int i=0;i<=255;i++){
analogWrite(BLEU,i);
delay(TEMPO);
}
//Magenta -> bleu
for(int i=255;i>=0;i--){
analogWrite(ROUGE,i);
delay(TEMPO);
}
}