J'ai repris le code, pour l’instant, sans bouton, que je verrai plus tard pour inclure.
Malheureusement, sur les 4 couleurs qui sont sensées arriver de façon aléatoire, en fin de loop, seuls les résultats vert et rouge ont pris en compte. Le bleu et le jaune semblent ne jamais être la solution. alors que les 4 couleurs s'affichent lors de la phase de démarrage.
const byte LED_R = 9;
const byte LED_G = 10;
const byte LED_B = 11;
int choixCouleur;
void setup() {
pinMode(LED_R, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
displayColor(0, 0, 0);
}
void loop() {
choixCouleur = random(1,4); // Choix aléatoire de la couleur
// 1ere boucle
displayColor(255, 0, 0); // allumer en Bleu
delay(200); // pendant 0,20 sec
displayColor(0, 255, 0); // allumer en Vert
delay(200); // pendant 0,20 sec
displayColor(0, 0, 255); // allumer en Rouge
delay(200); // pendant 0,20 sec
displayColor(0, 255, 255); // allumer en Jaune
delay(200); // pendant 0,20 sec
// 2ème boucle
displayColor(255, 0, 0); // allumer en Bleu
delay(200); // pendant 0,20 sec
displayColor(0, 255, 0); // allumer en Vert
delay(200); // pendant 0,20 sec
displayColor(0, 0, 255); // allumer en Rouge
delay(200); // pendant 0,20 sec
displayColor(0, 255, 255); // allumer en Jaune
delay(200); // pendant 0,20 sec
// 3ème boucle
displayColor(255, 0, 0); // allumer en Bleu
delay(200); // pendant 0,20 sec
displayColor(0, 255, 0); // allumer en Vert
delay(200); // pendant 0,20 sec
displayColor(0, 0, 255); // allumer en Rouge
delay(200); // pendant 0,20 sec
displayColor(0, 255, 255); // allumer en Jaune
delay(200); // pendant 0,20 sec
// 4ème boucle
displayColor(255, 0, 0); // allumer en Bleu
delay(300); // pendant 0,3 sec
displayColor(0, 255, 0); // allumer en Vert
delay(300); // pendant 0,3 sec
displayColor(0, 0, 255); // allumer en Rouge
delay(300); // pendant 0,3 sec
displayColor(0, 255, 255); // allumer en Jaune
delay(300); // pendant 0,3 sec
//5ème boucle
displayColor(255, 0, 0); // allumer en Bleu
delay(500); // pendant 0,5 sec
displayColor(0, 255, 0); // allumer en Vert
delay(500); // pendant 0,5 sec
displayColor(0, 0, 255); // allumer en Rouge
delay(500); // pendant 0,5 sec
displayColor(0, 255, 255); // allumer en Jaune
delay(500); // pendant 0,5 sec
// boucle avec choix aléatoire de la couleur
displayColor(255, 0, 0); // allumer en Bleu
-- choixCouleur; // décréménter choixCouleur
if (choixCouleur == 0) { // si la condition est vraie, aller à la fin
}
else { // si la condition est fausse
delay(1000); // pendant 1 sec
displayColor(0, 255, 0); // allumer en Vert
-- choixCouleur; // décréménter choixCouleur
}
if (choixCouleur == 0) { // si la condition est vraie, aller à la fin
}
else { // si la condition est fausse
delay(1000); // pendant 1 sec
displayColor(0, 0, 255); // allumer en Rouge
-- choixCouleur; // décréménter choixCouleur
}
if (choixCouleur == 0) { // si la condition est vraie, aller à la fin
}
else { // si la condition est fausse
delay(1000); // pendant 10 sec
displayColor(0, 255, 255); // allumer en Jaune
}
delay(10000); // pendant 10 sec
displayColor(0, 0, 0); // Eteindre la LED
delay(5000); // pendant 5 sec
}
/** Affiche une couleur */
void displayColor(byte r, byte g, byte b) {
// Assigne l'état des broches
// Version cathode commune
analogWrite(LED_R, r);
analogWrite(LED_G, g);
analogWrite(LED_B, b);
Où me suis-je trompé?
Comment amélioré mon code?