Bonjour à tous,
Je suis tout nouveau dans le monde d'Arduino depuis quelques jours.
Je commence à lire des tutos un peu de partout et utiliser le kit suivant et découvrir le C.
Aujourd'hui j'ai testé la LED RGB et j'ai essayé de faire un défilement de couleurs mais j'ai un petit souci entre le violet => Bleu et le vert => Jaune qui font comme des "saut" sans transition a la couleur suivante.
Mon code qui doit étre bien moche à vos yeux (je découvre aussi le C ) n'a pas l'air mauvais de se que je vois sur le moniteur. Est ce possible que le problème vienne du matériel?
Ici une vidéo du problème
Merci pour vos éclairages
const byte PIN_LED_R = 8;
const byte PIN_LED_G = 9;
const byte PIN_LED_B = 10;
void setup() {
// Initialise les broches
pinMode(PIN_LED_R, OUTPUT);
pinMode(PIN_LED_G, OUTPUT);
pinMode(PIN_LED_B, OUTPUT);
displayColor(0, 0, 0);
Serial.begin(9600);
}
void loop() {
int r = 255;// on attaque avec le rouge bien pur !
int g = 0;
int b = 0;
int d = 10; // Délais de "transition"
while(r == 255) // On a du rouge, on ajoute un peu de bleu pour arriver au violet
{
displayColor(r, g, b);
b++;
//Serial.print("Boucle 1 | ");
//Serial.print("R=");
//Serial.print(r);
//Serial.print(" B=");
//Serial.print(b);
//Serial.print(" G=");
//Serial.println(g);
if(b==255){r=254;}
delay(d);
}
while(r != 0) // La on a du violet on continu en supprimant le rouge pour arriver au bleu
{
displayColor(r, g, b);
r--;
//Serial.print("Boucle 2 | ");
//Serial.print("R=");
//Serial.print(r);
//Serial.print(" B=");
//Serial.print(b);
//Serial.print(" G=");
//Serial.println(g);
delay(d);
}
while(b ==255) // On a notre bleu on mets une lichette de vert pour avoir du turquoise
{
r=0;
displayColor(r, g, b);
g++;
//Serial.print("Boucle 3 | ");
//Serial.print("R=");
//Serial.print(r);
//Serial.print(" B=");
//Serial.print(b);
//Serial.print(" G=");
//Serial.println(g);
if(g==255){b=254;}
delay(d);
}
while(b != 0) // On a le turquoise on vire le bleu pour garder le vert
{
displayColor(r, g, b);
b--;
//Serial.print("Boucle 4 | ");
//Serial.print("R=");
//Serial.print(r);
//Serial.print(" B=");
//Serial.print(b);
//Serial.print(" G=");
//Serial.println(g);
delay(d);
}
while(g == 255) // On a le vert on mets le rouge pour avoir du jaune
{
displayColor(r, g, b);
r++;
//Serial.print("Boucle 5 | ");
//Serial.print("R=");
//Serial.print(r);
//Serial.print(" B=");
//Serial.print(b);
//Serial.print(" G=");
//Serial.println(g);
if(r==255){g=254;}
delay(d);
}
while(g > 0) // On vire le vert pour avoir le orange et repartir sur la 1ere boucle de rouge
{
displayColor(r, g, b);
g--;
//Serial.print("Boucle 6 | ");
//Serial.print("R=");
//Serial.print(r);
//Serial.print(" B=");
//Serial.print(b);
//Serial.print(" G=");
//Serial.println(g);
delay(d);
}
}
/** Affiche une couleur */
void displayColor(byte r, byte g, byte b) {
// Assigne l'état des broches
// Version cathode commune
analogWrite(PIN_LED_R, r);
analogWrite(PIN_LED_G, g);
analogWrite(PIN_LED_B, b);
}