Changer plusieurs fois la couleur à l'aide d'un bouton poussoir

Bonjour, Voilà je souhaite programmer une LED RGB qui change plusieurs fois de couleur (à chaque fois cette couleur sera différente) à l'aide d'un seul bouton poussoir, sauf que je ne sais pas comment m'y prendre pour le programme, donc je viens ici en espérant trouver de l'aide :)

Merci

bonjour, explique un peu mieux ton idée. il y a la fonction random que tu peux utiliser. 1 appui => 3 random, 1 par couleur

Merci pour ta réponse rapide :) Le but est de faire une lyre. Dans le programme un moteur y est intégré et elle doit pouvoir changer de couleur au bon vouloir de la personne en appuyant sur un bouton poussoir. Il s'agit d'une LED RGB. Est ce que ce serait possible d'avoir plus de détail sur cette fonction random stp ?

http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.Random

merci pour la réponse ;) et est ce que c'est possible de faire ça avec l'incrémentation ?

pourquoi parler d'incrémentation dans une recherche "couleur sera différente" incrémentation pour moi, c'est : départ = 1 depart = depart +1 ou 25 ou 100 etc....

Hello

http://lmgtfy.com/?q=arduino+random

Heavy_Balls: merci pour la réponse ;) et est ce que c'est possible de faire ça avec l'incrémentation ?

Bonjour,

Oui, une led RGB permet de faire 8 'couleurs' avec des sorties digitales (si on n'utilise pas le PWM). Chaque fois que tu appuies sur le bouton tu incrémentes la couleur (modulo 8 ) et tu affiches sur la led RVB.

d'acc merci pour les réponses, voici mon programme pour l'instant, Est-ce que vous pouvez m'indiquer où je dois placer la commande pour le bouton poussoir qui fait que dès que j'appuie dessus, ça change de couleur svp :

int redPin = 2; int greenPin = 3; int bluePin = 4; int BP = 6;

//uncomment this line if using a Common Anode LED //#define COMMON_ANODE void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); pinMode(BP, INPUT);

}

void loop() { setColor(255, 0, 0); // red delay(1000); setColor(0, 255, 0); // green delay(1000); setColor(0, 0, 255); // blue delay(1000); setColor(255, 255, 0); // yellow delay(1000); setColor(80, 0, 80); // purple delay(1000); setColor(0, 255, 255); // aqua delay(1000); }

void setColor(int red, int green, int blue) {

ifdef COMMON_ANODE

red = 255 - red; green = 255 - green; blue = 255 - blue;

endif

analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); }

merci de mettre ton code entre balise code </>

ton code ne peut compiler, plusieurs variables ne sont pas définies.
red, green, bleue

regardes les exemple dans l’ide, il y a ce que tu cherche pour le bouton

Heavy_Balls: Est-ce que vous pouvez m'indiquer où je dois placer la commande pour le bouton poussoir qui fait que dès que j'appuie dessus, ça change de couleur svp :

Il faut faire qqchose comme ça:

const int redPin = 3;
const int greenPin = 5;
const int bluePin = 6;
const int BP = 7;

//uncomment this line if using a Common Anode LED
//#define COMMON_ANODE
void setup()
{
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
  pinMode(BP, INPUT_PULLUP);

}

void loop()
{
  static int coul = 0;
  static bool etatPrec = false;

  bool etatBouton = !digitalRead(BP);
  if (etatBouton && !etatPrec)
  {
    // on vient d'enfoncer le bouton
    coul++;
    if (coul >= 6)
      coul = 0;
  }
  etatPrec = etatBouton;
  
  switch (coul)
  {
    case 0:
      setColor(255, 0, 0);  // red
      break;
    case 1:
      setColor(0, 255, 0);  // green
      break;
    case 2:
      setColor(0, 0, 255);  // blue
      break;
    case 3:
      setColor(255, 255, 0);  // yellow
      break;
    case 4:
      setColor(80, 0, 80);  // purple
      break;
    case 5:
      setColor(0, 255, 255);  // aqua
      break;
  }

  delay(10);
}

void setColor(int red, int green, int blue)
{
#ifdef COMMON_ANODE
  red = 255 - red;
  green = 255 - green;
  blue = 255 - blue;
#endif
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);
}

Remarques: - J'ai changé les numéros de pin d'entrée/sortie. Les pins que tu utilisais ne supportaient pas (toutes) le PWM. - Le code suppose que le bouton poussoir est cablé entre la pin et la masse (pullup interne)

kamill: Il faut faire qqchose comme ça:

const int redPin = 3;
const int greenPin = 5;
const int bluePin = 6;
const int BP = 7;

//uncomment this line if using a Common Anode LED //#define COMMON_ANODE void setup() {   pinMode(redPin, OUTPUT);   pinMode(greenPin, OUTPUT);   pinMode(bluePin, OUTPUT);   pinMode(BP, INPUT_PULLUP);

}

void loop() {   static int coul = 0;   static bool etatPrec = false;

  bool etatBouton = !digitalRead(BP);   if (etatBouton && !etatPrec)   {     // on vient d'enfoncer le bouton     coul++;     if (coul >= 6)       coul = 0;   }   etatPrec = etatBouton;     switch (coul)   {     case 0:       setColor(255, 0, 0);  // red       break;     case 1:       setColor(0, 255, 0);  // green       break;     case 2:       setColor(0, 0, 255);  // blue       break;     case 3:       setColor(255, 255, 0);  // yellow       break;     case 4:       setColor(80, 0, 80);  // purple       break;     case 5:       setColor(0, 255, 255);  // aqua       break;   }

  delay(10); }

void setColor(int red, int green, int blue) {

ifdef COMMON_ANODE

  red = 255 - red;   green = 255 - green;   blue = 255 - blue;

endif

  analogWrite(redPin, red);   analogWrite(greenPin, green);   analogWrite(bluePin, blue); }




Remarques:
- J'ai changé les numéros de pin d'entrée/sortie. Les pins que tu utilisais ne supportaient pas (toutes) le PWM.
- Le code suppose que le bouton poussoir est cablé entre la pin et la masse (pullup interne)

Comment on peut faire pour que les couleurs changent à l'infini? genre la boucle de couleur recommence à chaque clic svp ?

Je ne comprends pas ta question. Dans le programme ci dessus quand la dernière couleur est atteinte on recommence à la première couleur.

kamill: Je ne comprends pas ta question. Dans le programme ci dessus quand la dernière couleur est atteinte on recommence à la première couleur.

oui c'est bon désolée je voualis le faire avec seulement 4 couleurs et j'avais oublié de changer 'coul>=6' en coul >=4

merci

if (@Heavy_Balls == @leabarlet) { c'est toujours pour le master-mind ? }

J-M-L:
if (@Heavy_Balls == @leabarlet) {
c’est toujours pour le master-mind ?
}

oui je galère un peu…