P04. Led RGB
P04. Led RGB
OBJECTIU D'APRENENTATGE
Comprendre el funcionament d’un LED RGB i els seus tres canals de color (vermell, verd i blau).
Aprendre a controlar la intensitat de llum amb PWM (sortides analògiques).
Crear colors nous combinant diferents valors d’intensitat.
Desenvolupar la capacitat de programar canvis de color de forma seqüencial o interactiva.
Els leds a l'Arduino són senyals DIGITALS, per tal de poder variar el seu color cal utlitlizar la opció setColor (r, g, b); sempre i quan utlitzaem les senyals degitals de l'Arduino amb "tilde" ens deixarà tractar aquest tipus de senyal del led RGB.
CAL SABER...
El codi de colors RGB es basa en una barreja de 3 colors per aconseguir tota la gama de colors possibles.
RGB: Red-Blue-Green
Entreu en aquesta web per a veure la mostra de colors i saber la combinació RGB per obtenir el color que dessitjeu:
MATERIAL NECESSARI
MONTATGE
⚙️ Connexions (comú càtode)
Pin 9 → Resistència → Pin R (vermell)
Pin 10 → Resistència → Pin G (verd)
Pin 11 → Resistència → Pin B (blau)
Pin comú → GND
Connecteu el càtode del led RGB que és el pin més llarg de RGB conduït al GND d'Arduino i els altres tres pins al pin 11, 10, 9 d'Arduino a través de les resistències de 220 ohm.
Les resistències evitaran que l'excés de corrent flueixi a través del led RGB.
⚙️ Muntatge del circuit
NIVELL BÀSIC
🎯 Objectiu:
Fer que el LED canviï de color automàticament cada segon (vermell → verd → blau).
💻 Codi bàsic
NIVELL INTERMEDI
Colors combinats amb PWM
🎯 Objectiu:
Fer que el LED mostri colors combinats (taronja, morat, cian, blanc...) utilitzant analogWrite() per controlar la intensitat de cada color.
💻 Codi intermedi
T'atreveixes??
NIVELL AVANÇAT
Control de color amb polsador
🎯 Objectiu:
Cada cop que es prem el botó, el LED canvia al color següent d’una seqüència (vermell → verd → blau → blanc → apagat → repetir).
💻 Codi avançat
T'atreveixes??
Codi resolt
int R = 9;
int G = 10;
int B = 11;
int boto = 7;
int mode = 0;
int botoAnterior = LOW;
void setup() {
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
pinMode(boto, INPUT);
}
void loop() {
int botoActual = digitalRead(boto);
if (botoActual == HIGH && botoAnterior == LOW) {
mode++;
if (mode > 5) mode = 0;
delay(200);
}
botoAnterior = botoActual;
if (mode == 0) { analogWrite(R, 0); analogWrite(G, 0); analogWrite(B, 0); } // Apagat
if (mode == 1) { analogWrite(R, 255); analogWrite(G, 0); analogWrite(B, 0); } // Vermell
if (mode == 2) { analogWrite(R, 0); analogWrite(G, 255); analogWrite(B, 0); } // Verd
if (mode == 3) { analogWrite(R, 0); analogWrite(G, 0); analogWrite(B, 255); } // Blau
if (mode == 4) { analogWrite(R, 255); analogWrite(G, 255); analogWrite(B, 255); } // Blanc
if (mode == 5) { analogWrite(R, 255); analogWrite(G, 255); analogWrite(B, 0); } // Groc
}