Example de montage de la led RGB 5mm

Le forum du Snootlab Starter Kit

Example de montage de la led RGB 5mm

Message non lude mathk » Ven 22 Juil 2011 20:01

Bonjour,

Je chercherais un example de montage pour la led 5mm RGB fournit dans le Kit.
Aussi il serait interessant d'avoir les caracteristiques techniques de cette led?

Merci
mathk
 
Messages: 2
Inscription: Ven 22 Juil 2011 19:59

Re: Example de montage de la led RGB 5mm

Message non lude Lionel » Ven 22 Juil 2011 23:23

Bonjour,

La datasheet de la led est en pièce jointe a ce message,

Je vous insère un petit montage rapide pour s'amuser avec la led (les résistances ne sont pas optimisées, mais ça marchera très bien pour un test)
La patte longue de la led étant celle qui n'a pas de résistance sur le dessin ci dessous (+)

RGB led.png
RGB led.png (32.52 Kio) Vu 2718 fois


Et du code pour faire tourner tout ça (issu d'un post sur le forum arduino)

Note : Je n'ai pas le matériel sous la main à cette heure ci, ça devrait marcher, je testerai demain
Au cas ce ne soit pas le cas, il faudra peut être dé-commenter les lignes suivantes (en fin de code)
// output_r = map (output_r,0,255,255,0);
// output_g = map (output_g,0,255,255,0);
// output_b = map (output_b,0,255,255,0);



Code: Tout sélectionner
//i/o pin declarations
int rpin = 9;
int gpin = 11;
int bpin = 10;

//function prototypes
void solid(int r, int g, int b, int t);
void fade(int r1, int g1, int b1, int r2, int g2, int b2, int t);

void setup()
{
//empty
}
void loop()
{
  //colour sequence instructions

  //Example sequence one: Rainbow fade over 12 seconds:
  solid(255,0,0,1000); // Maintain pure red 1 sec
  fade(255,0,0,0,255,0,3000); //fade from red to green over 3 seconds
  solid(0,255,0,1000); // Maintain pure green 1 sec
  fade(0,255,0,0,0,255,3000); //fade from green to blue over 3 seconds
  solid(0,0,255,1000); // Maintain pure blue 1 sec
  fade(0,0,255,255,0,0,3000); //fade from blue to red over 3 seconds
}

//function holds RGB values for time t milliseconds
void solid(int r, int g, int b, int t)
{

  //map values - arduino is sinking current, not sourcing it
//  r = map(r, 0, 255, 255, 0);
//  g = map(g, 0, 255, 255, 0);
//  b = map(b, 0, 255, 255, 0);

  //output
  analogWrite(rpin,r);
  analogWrite(gpin,g);
  analogWrite(bpin,b);

  //hold at this colour set for t ms
  delay(t);
}

//function fades between two RGB values over fade time period t
//maximum value of fade time = 30 seconds before gradient values
//get too small for floating point math to work? replace floats
//with doubles to remedy this?
void fade(int r1, int g1, int b1, int r2, int g2, int b2, int t)
{
  float r_float1, g_float1, b_float1;
  float r_float2, g_float2, b_float2;
  float grad_r, grad_g, grad_b;
  float output_r, output_g, output_b;

  //declare integer RGB values as float values
  r_float1 = (float) r1;
  g_float1 = (float) g1;
  b_float1 = (float) b1;
  r_float2 = (float) r2;
  g_float2 = (float) g2;
  b_float2 = (float) b2;

  //calculate rates of change of R, G, and B values
  grad_r = (r_float2-r_float1)/t;
  grad_g = (g_float2-g_float1)/t;
  grad_b = (b_float2-b_float1)/t;

  //loop round, incrementing time value "i"
  for ( float i=0; i<=t; i++ )
  {
    output_r = r_float1 + grad_r*i;
    output_g = g_float1 + grad_g*i;
    output_b = b_float1 + grad_b*i;

    //map values - arduino is sinking current, not sourcing it
//    output_r = map (output_r,0,255,255,0);
//    output_g = map (output_g,0,255,255,0);
//    output_b = map (output_b,0,255,255,0);

    //output
    analogWrite(rpin, (int)output_r);
    analogWrite(gpin, (int)output_g);
    analogWrite(bpin, (int)output_b);

    //hold at this colour set for 1ms
    delay(1);
  }
}


Bon bricolage !
Fichiers joints
[LED-RGB01]-540R2GBC-CA.pdf
(403.58 Kio) Téléchargé 235 fois
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse

Re: Example de montage de la led RGB 5mm

Message non lude mathk » Sam 23 Juil 2011 18:10

Merci beaucoup pour cette example.
Il marche bien à condition de dé-commenter les lignes indiqués.
mathk
 
Messages: 2
Inscription: Ven 22 Juil 2011 19:59

Re: Example de montage de la led RGB 5mm

Message non lude lapiin » Mer 27 Juil 2011 23:16

oui ainsi que celles ci :

//map values - arduino is sinking current, not sourcing it
// r = map(r, 0, 255, 255, 0);
// g = map(g, 0, 255, 255, 0);
// b = map(b, 0, 255, 255, 0);
lapiin
 
Messages: 12
Inscription: Mer 27 Juil 2011 21:01
Localisation: Baziège (31)

Re: Example de montage de la led RGB 5mm

Message non lude Lionel » Jeu 28 Juil 2011 09:17

Bonjour, et merci de nous signaler l'oubli !!

Donc, le bon code pour s'amuser avec la led RGB est suivant

Code: Tout sélectionner
//i/o pin declarations
int rpin = 9;
int gpin = 11;
int bpin = 10;

//function prototypes
void solid(int r, int g, int b, int t);
void fade(int r1, int g1, int b1, int r2, int g2, int b2, int t);

void setup()
{
//empty
}
void loop()
{
  //colour sequence instructions

  //Example sequence one: Rainbow fade over 12 seconds:
  solid(255,0,0,1000); // Maintain pure red 1 sec
  fade(255,0,0,0,255,0,3000); //fade from red to green over 3 seconds
  solid(0,255,0,1000); // Maintain pure green 1 sec
  fade(0,255,0,0,0,255,3000); //fade from green to blue over 3 seconds
  solid(0,0,255,1000); // Maintain pure blue 1 sec
  fade(0,0,255,255,0,0,3000); //fade from blue to red over 3 seconds
}

//function holds RGB values for time t milliseconds
void solid(int r, int g, int b, int t)
{

  //map values - arduino is sinking current, not sourcing it
  r = map(r, 0, 255, 255, 0);
  g = map(g, 0, 255, 255, 0);
  b = map(b, 0, 255, 255, 0);

  //output
  analogWrite(rpin,r);
  analogWrite(gpin,g);
  analogWrite(bpin,b);

  //hold at this colour set for t ms
  delay(t);
}

//function fades between two RGB values over fade time period t
//maximum value of fade time = 30 seconds before gradient values
//get too small for floating point math to work? replace floats
//with doubles to remedy this?
void fade(int r1, int g1, int b1, int r2, int g2, int b2, int t)
{
  float r_float1, g_float1, b_float1;
  float r_float2, g_float2, b_float2;
  float grad_r, grad_g, grad_b;
  float output_r, output_g, output_b;

  //declare integer RGB values as float values
  r_float1 = (float) r1;
  g_float1 = (float) g1;
  b_float1 = (float) b1;
  r_float2 = (float) r2;
  g_float2 = (float) g2;
  b_float2 = (float) b2;

  //calculate rates of change of R, G, and B values
  grad_r = (r_float2-r_float1)/t;
  grad_g = (g_float2-g_float1)/t;
  grad_b = (b_float2-b_float1)/t;

  //loop round, incrementing time value "i"
  for ( float i=0; i<=t; i++ )
  {
    output_r = r_float1 + grad_r*i;
    output_g = g_float1 + grad_g*i;
    output_b = b_float1 + grad_b*i;

    //map values - arduino is sinking current, not sourcing it
    output_r = map (output_r,0,255,255,0);
    output_g = map (output_g,0,255,255,0);
    output_b = map (output_b,0,255,255,0);

    //output
    analogWrite(rpin, (int)output_r);
    analogWrite(gpin, (int)output_g);
    analogWrite(bpin, (int)output_b);

    //hold at this colour set for 1ms
    delay(1);
  }
}
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse


Retourner vers Starter Kit

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité