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

CorRGB
🔴 VermelhoMAX00
🟢 Verde0MAX0
🔵 Azul00MAX
🟡 AmareloMAXMAX0
🟣 MagentaMAX0MAX
🩵 Ciano0MAXMAX
⚪ BrancoMAXMAXMAX

🎛️ 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