⬤ Intermédio
🌈 LED RGB
Nesta página
Funcionamento do LED RGB
Montagem
Cores primárias
Mistura de cores com PWM
Ciclo de cores (arco-íris)
🌈 O LED RGB
Um LED RGB (Red Green Blue) é na realidade três LEDs num único encapsulamento 5mm, partilhando um cátodo comum (ou ânodo comum). Misturando as intensidades das três cores, conseguimos produzir qualquer cor visível.
Pernas
4
R · GND (mais longa) · G · B
Tipo
Cátodo comum
GND = perna mais longa
Tensão R
~2.0V
LED vermelho interno
Tensão G/B
~3.0V
Verde e azul
🔌 Montagem
P0→ Resistência 47Ω → Perna Vermelho (R) do LED RGB
P1→ Resistência 47Ω → Perna Verde (G) do LED RGB
P2→ Resistência 47Ω → Perna Azul (B) do LED RGB
GND→ Perna mais longa (Cátodo comum)
🎨 Cores Primárias e Secundárias
| Cor | R | G | B |
|---|---|---|---|
| 🔴 Vermelho | MAX | 0 | 0 |
| 🟢 Verde | 0 | MAX | 0 |
| 🔵 Azul | 0 | 0 | MAX |
| 🟡 Amarelo | MAX | MAX | 0 |
| 🟣 Magenta | MAX | 0 | MAX |
| 🩵 Ciano | 0 | MAX | MAX |
| ⚪ Branco | MAX | MAX | MAX |
🎛️ Mistura de Cores com PWM
rgb_pwm.js
// Definir cor RGB com valores 0-1023
function setCor(r: number, g: number, b: number) {
pins.analogWritePin(AnalogPin.P0, r)
pins.analogWritePin(AnalogPin.P1, g)
pins.analogWritePin(AnalogPin.P2, b)
}
// Testar cores ao pressionar botões
input.onButtonPressed(Button.A, function () {
setCor(1023, 0, 0) // Vermelho puro
})
input.onButtonPressed(Button.B, function () {
setCor(0, 800, 200) // Verde azulado
})
input.onButtonPressed(Button.AB, function () {
setCor(1023, 512, 0) // Laranja
})
🌈 Ciclo de Cores — Arco-Íris
arco_iris.js
// Transição suave por todo o espectro de cores
function setCor(r: number, g: number, b: number) {
pins.analogWritePin(AnalogPin.P0, r)
pins.analogWritePin(AnalogPin.P1, g)
pins.analogWritePin(AnalogPin.P2, b)
}
basic.forever(function () {
// Vermelho → Amarelo
for (let i = 0; i <= 1023; i += 20) {
setCor(1023, i, 0); basic.pause(10)
}
// Amarelo → Verde
for (let i = 1023; i >= 0; i -= 20) {
setCor(i, 1023, 0); basic.pause(10)
}
// Verde → Ciano
for (let i = 0; i <= 1023; i += 20) {
setCor(0, 1023, i); basic.pause(10)
}
// Ciano → Azul
for (let i = 1023; i >= 0; i -= 20) {
setCor(0, i, 1023); basic.pause(10)
}
// Azul → Magenta
for (let i = 0; i <= 1023; i += 20) {
setCor(i, 0, 1023); basic.pause(10)
}
// Magenta → Vermelho
for (let i = 1023; i >= 0; i -= 20) {
setCor(1023, 0, i); basic.pause(10)
}
})
🏆 Para ir mais longe
- Usa o potenciómetro para controlar a tonalidade (hue) enquanto o ciclo de arco-íris corre
- Implementa um "modo discoteca": o acelerómetro ao ser sacudido muda a cor aleatoriamente
- Cria um indicador de temperatura: azul=frio, verde=ameno, amarelo=morno, vermelho=quente
- Combina LDR + RGB: a cor muda conforme a luminosidade ambiente — por exemplo azul de noite, branco de dia