Outils pour utilisateurs

Outils du site


wiki:tutoriels:arduino:led_rgb

Contrôler une led RGB

  • Porteur du projet : Marine Espinasse
  • Date : DSAA 2016-2017
  • Licence : libre !
  • Contexte : DSAA

Les leds RGB (pour Red, Green et Blue) sont constituées de trois leds, une par couleur primaire. Avec la base de ces trois couleurs, en faisant varier l'intensité de la nuance et sa luminosité, il est possible de créer un grand nombre de couleurs.

Ici nous allons voir comment faire varier la couleur d'une led rgb, et comment la contrôler.

Matériel :

* Carte Seeduino Lotus
* Led RGB Grove
* Module bouton Grove
Seeduino LotusChainable led RGB GroveModule bouton Grove

Pour découvrir ce qu'est le système Grove et ses composants, cliquez ici.

Voici le code d'exemple fourni par Seedstudio pour utiliser la led RGB. Ce programme permet de faire un cycle de couleur uniforme à partir de la led. Remarque : il s'agit ici d'une “Chainable led”, nous pouvons en brancher plusieurs en série, former une chaîne de leds (jusqu'à 1024 à la suite), en n'utilisant qu'un seul port de notre microcontrôleur.

  /* 
   * Example of using the ChainableRGB library for controlling a Grove RGB.
   * This code cycles through all the colors in an uniform way. This is accomplished using a HSB color space. 
   */
  #include <ChainableLED.h>
  #define NUM_LEDS  1 // nombre de leds branchées
  ChainableLED leds(7, 8, NUM_LEDS); // défini les ports sur lesquel est branchée notre led
  void setup()
  {
  }
  float hue = 0.0; // teinte
  boolean up = true;
  void loop() 
  {
    for (byte i=0; i<NUM_LEDS; i++)
      leds.setColorHSB(i, hue, 1.0, 0.5);
    delay(50); // temps d'apparition de chaque couleur
    if (up)
      hue+= 0.025;
    else
      hue-= 0.025;
    if (hue>=1.0 && up)
      up = false;
    else if (hue<=0.0 && !up)
      up = true;
  }
  

Maintenant, j'aimerais pouvoir choisir quand ma led change de couleur. Pour cela, je me suis procuré un bouton poussoir tout simple, et je choisi de changer la couleur de ma led lorsque le bouton est enclenché.

   #include <ChainableLED.h>
   #define NUM_LEDS 1 // nombre de leds branchées sur la carte
   ChainableLED leds(7, 8, NUM_LEDS);
   float hue = 0.0;          // défini un nombre qui peut être décimal
   boolean up = true;        // bouléen = vrai ou faux, ici up est le nom de la variable
   const int buttonPin = 3;  // the number of the pushbutton pin
   int buttonState = 0;      // variable for reading the pushbutton status
   void setup() 
   {
   leds.init();  
        pinMode(buttonPin, INPUT);  // initialize the pushbutton pin as an input
             }
  void loop(){
  buttonState = digitalRead(buttonPin); // read the state of the pushbutton value:
  // check if the pushbutton is pressed.
  if (buttonState == HIGH)  // if it is, the buttonState is HIGH:
  {
      for (byte i=0; i<NUM_LEDS; i++)
      leds.setColorHSB(i, hue, 1.0, 0.012); // (octet de la led, teinte, saturation, luminosité)
      delay(0.25); // tempo de transition de teinte
      if (up)
        hue+= 0.05;
      else
        hue-= 0.05;
      if (hue>=1.0 && up)
        up = false;
      else if (hue<=0.0 && !up)
        up = true;
  }   

Avec ce code, une simple pression change la couleur de la led, en revanche si on maintien le bouton enclenché la led reste dans la boucle et varie d'une couleur à une autre tant qu'il n'est pas relâché.

LIENS UTILES

wiki/tutoriels/arduino/led_rgb.txt · Dernière modification: 2016/11/28 17:37 (modification externe)