Pages: [1]   Go Down
Author Topic: lampada led rgb  (Read 1063 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao a tutti! come faccio a far variare di colore i miei 3 led rgb? non intendo cambiare colore subito, ma passare da un colore ad un altro passando attraverso altre tonalità!
questo è lo sketch
Code:
#include <IRremote.h>

int RECV_PIN = A3;

int red1 = 13; //pin per il led rosso
int green1 = 12; //pin per il led verde
int blue1 = 11; //pin per il led blu
int red2 = 10;
int green2 = 9;
int blue2 = 8;
int red3 = 7;
int green3 = 6;
int blue3 = 5;

IRrecv irrecv(RECV_PIN);

decode_results results;


void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // ricezione

  //impostazione pin come uscita
  pinMode(red1, OUTPUT);
  pinMode(green1, OUTPUT);
  pinMode(blue1, OUTPUT);
  pinMode(red2, OUTPUT);
  pinMode(green2, OUTPUT);
  pinMode(blue2, OUTPUT);
  pinMode(red3, OUTPUT);
  pinMode(green3, OUTPUT);
  pinMode(blue3, OUTPUT);
  pinMode (RECV_PIN, INPUT);

   digitalWrite(red1,LOW);
      digitalWrite(green1,LOW);
      digitalWrite(blue1,LOW);
      // secondo led
      digitalWrite(red2,LOW);
      digitalWrite(green2,LOW);
      digitalWrite(blue2,LOW);
      // terzo led
      digitalWrite(red3,LOW);
      digitalWrite(green3,LOW);
      digitalWrite(blue3,LOW);
}
void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
 
  if (irrecv.decode(&results)) {

    if (results.value == 0xB5210DA6) {  // giallo

      analogWrite(red1,255);
      analogWrite(green1,180);
      analogWrite(blue1,0);
      // secondo led
      analogWrite(red2,255);
      analogWrite(green2,180);
      analogWrite(blue2,0);
      // terzo led
      analogWrite(red3,255);
      analogWrite(green3,180);
      analogWrite(blue3,0);
    }
   

    if (results.value == 0xE13DDA28) {    // bianco

      analogWrite(red1,255);
      analogWrite(green1,255);
      analogWrite(blue1,255);
      // secondo led
      analogWrite(red2,200);
      analogWrite(green2,200);
      analogWrite(blue2,200);
      // terzo led
      analogWrite(red3,200);
      analogWrite(green3,200);
      analogWrite(blue3,200);
    }

    if (results.value == 0xDAEA83EC) {   // rosso

      analogWrite(red1,255);
      analogWrite(green1,0);
      analogWrite(blue1,0);
      // secondo led
      analogWrite(red2,200);
      analogWrite(green2,0);
      analogWrite(blue2,0);
      // terzo led
      analogWrite(red3,200);
      analogWrite(green3,0);
      analogWrite(blue3,0);
    }       

    if (results.value == 0x2BAFCEEC) {   // verde

      analogWrite(red1,0);
      analogWrite(green1,255);
      analogWrite(blue1,0);
      // secondo led
      analogWrite(red2,0);
      analogWrite(green2,200);
      analogWrite(blue2,0);
      // terzo led
      analogWrite(red3,0);
      analogWrite(green3,200);
      analogWrite(blue3,0);
    }

    if (results.value == 0x71A1FE88) {  // blu

      analogWrite(red1,0);
      analogWrite(green1,0);
      analogWrite(blue1,255);
      // secondo led
      analogWrite(red2,0);
      analogWrite(green2,0);
      analogWrite(blue2,200);
      // terzo led
      analogWrite(red3,0);
      analogWrite(green3,0);
      analogWrite(blue3,200);
    }
        if (results.value == 0x974F362) {  // spento

      digitalWrite(red1,LOW);
      digitalWrite(green1,LOW);
      digitalWrite(blue1,LOW);
      // secondo led
      digitalWrite(red2,LOW);
      digitalWrite(green2,LOW);
      digitalWrite(blue2,LOW);
      // terzo led
      digitalWrite(red3,LOW);
      digitalWrite(green3,LOW);
      digitalWrite(blue3,LOW);
    }

  }


}


grazie per le risposte
Logged

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2316
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
se cerchi  "mood lamp"  troverai un mondo di lampade rgb.
Per il cambio colore attraverso dissolvenze (spero si dica così), dovrai utilizzare del codice che passa da un valore pwm all'altro attraverso i valori dell'intervallo stesso.
Quindi se per esempio devi passare sul canale rosso da 100 a 200, potresti utilizzare un ciclo for passando per i valori intermedi.
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok e per farlo restare sempre in quel ciclo quando premo il tasto relativo a questa mod come faccio?
Logged

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2316
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao

Quote
ok e per farlo restare sempre in quel ciclo quando premo il tasto relativo a questa mod come faccio?

non ho capito forse la domanda.
Vuoi fare in modo che se premi un pulsante, parta una serie di dissolvenze?
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quando premo il tasto del telecomando mi entra in modalità "dissolvenza" e continui a cambiare i colori dovrei fare una sorta di loop nel loop! non sono molto ferrato nella programmazione il ciclo for sto cercando ora di capirlo un po smiley-lol
« Last Edit: May 10, 2013, 06:35:59 am by imagider » Logged

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2316
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,

Quote
dovrei fare una sorta di loop nel loop! non sono molto ferrato nella programmazione il ciclo for sto cercando ora di capirlo un po

ecco, inizia a far fare la dissolvenza ad un led, poi passi all'rgb  smiley-razz
E usa google, che è tu amico.

Si trova tutto, come per esempio:
http://arduino.cc/en/Tutorial/Fading
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il fade sono riuscito a farlo! ora vorrei integrarlo al mio programma ! come faccio a digli quando premo il tasto del telecomando entri in fade e quando ne premo un altro fai un'altra cosa?
per il fade ho usato questo
Code:
const int redPin = 11;
const int greenPin = 10;
const int bluePin = 9;

 
void setup() {
  // Start off with the LED off.
  setColourRgb(0,0,0);
}
 
void loop() {
  unsigned int rgbColour[3];
 
  // Start off with red.
  rgbColour[0] = 255;
  rgbColour[1] = 0;
  rgbColour[2] = 0; 
 
  // Choose the colours to increment and decrement.
  for (int decColour = 0; decColour < 3; decColour += 1) {
    int incColour = decColour == 2 ? 0 : decColour + 1;
 
    // cross-fade the two colours.
    for(int i = 0; i < 255; i += 1) {
      rgbColour[decColour] -= 1;
      rgbColour[incColour] += 1;
     
      setColourRgb(rgbColour[0], rgbColour[1], rgbColour[2]);
      delay(5);
    }
  }
}
 
void setColourRgb(unsigned int red, unsigned int green, unsigned int blue) {
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);
 }
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21879
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Arduino UNO ha solo 6 Uscite PWM di cui 2 non puoi usarli quando usi la libreria IRremote perch usano in comune un timer.
Non puoi regolare 3 LED RGB indipendentemente.

Ciao Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

e se volessi fare solo con un led?
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21879
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Colleghi i 3 RGB per ogni colore in paralello. Ogni LED deve avere le sue resistenze che limitano la corrente.
Ti servono 3 tansistori per poterli pilotare in contemporanea.
Ciao Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 69
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il mio problema è a livetto software! come faccio con un telecomando a spegnere il led? non riesco a fare questo
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 333
Posts: 22973
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La logica è: dentro al loop che fa il fading devi mettere una lettura del telecomando.
Il codice lo devi però scrivere te smiley-wink
Logged


Pages: [1]   Go Up
Jump to: