Início›Módulos›LED RGB
⬤ Intermédio · Grupo 1 — Atuadores Luminosos

🌈 LED RGB

⏱️ 30 min 🧩 Módulo LED RGB · 3× PWM 📦 Módulo #27

Nesta página

🔬 Sobre o Módulo LED RGB

O módulo LED RGB combina três LEDs (Vermelho, Verde, Azul) num único encapsulamento com cátodo comum. Controlando independentemente a intensidade de cada canal com PWM, podes criar praticamente qualquer cor visível — incluindo branco (R+G+B a 100%).

Tipo
Cátodo comum
GND partilhado — LOW=off
Canais
3
R, G, B independentes
Tensão
5V
VCC do Arduino
Controlo
PWM
analogWrite(0–255)
Pinos PWM
3
D9, D10, D11
Corrente
~20 mA
por canal (60 mA total)

🔌 Pinagem — Módulo LED RGB

VCCAlimentação → 5V do Arduino
GNDMassa → GND do Arduino (cátodo comum)
RCanal Vermelho → pino PWM D9 (~)
GCanal Verde → pino PWM D10 (~)
BCanal Azul → pino PWM D11 (~)
⚠️
Não uses os pinos D0 ou D1 (RX/TX) — interferem com a comunicação USB. Os pinos PWM do Arduino UNO são D3, D5, D6, D9, D10, D11 (marcados com ~ no shield).

🔗 Ligar ao Arduino

1

Desliga o Arduino

Desliga o USB antes de fazer qualquer ligação.

2

Fio VCC

Fio Dupont M-F do pino VCC do módulo ao pino 5V do Arduino.

3

Fio GND

Fio Dupont do pino GND do módulo ao GND do Arduino.

4

Canal R

Fio do pino R do módulo ao pino D9 do Arduino.

5

Canal G

Fio do pino G do módulo ao pino D10 do Arduino.

6

Canal B

Fio do pino B do módulo ao pino D11 do Arduino.

💻 Ciclo de Cores — Código Básico

ex_led_rgb_ciclo.ino
#define PIN_R 9
#define PIN_G 10
#define PIN_B 11

void setCor(int r, int g, int b) {
  analogWrite(PIN_R, r);
  analogWrite(PIN_G, g);
  analogWrite(PIN_B, b);
}

void setup() {
  pinMode(PIN_R, OUTPUT);
  pinMode(PIN_G, OUTPUT);
  pinMode(PIN_B, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  setCor(255, 0,   0);   delay(600); // Vermelho
  setCor(0,   255, 0);   delay(600); // Verde
  setCor(0,   0,   255); delay(600); // Azul
  setCor(255, 255, 0);   delay(600); // Amarelo (R+G)
  setCor(0,   255, 255); delay(600); // Ciano (G+B)
  setCor(255, 0,   255); delay(600); // Magenta (R+B)
  setCor(255, 255, 255); delay(600); // Branco
  setCor(0,   0,   0);   delay(600); // Apagado
}

🎨 Mistura RGB com PWM — Fade Suave

ex_led_rgb_fade.ino
#define PIN_R 9
#define PIN_G 10
#define PIN_B 11

void setCor(int r, int g, int b) {
  analogWrite(PIN_R, r);
  analogWrite(PIN_G, g);
  analogWrite(PIN_B, b);
}

void fade(int r1,int g1,int b1, int r2,int g2,int b2, int ms) {
  for (int i = 0; i <= 100; i++) {
    setCor(
      r1 + (r2-r1)*i/100,
      g1 + (g2-g1)*i/100,
      b1 + (b2-b1)*i/100
    );
    delay(ms/100);
  }
}

void setup() {
  pinMode(PIN_R, OUTPUT);
  pinMode(PIN_G, OUTPUT);
  pinMode(PIN_B, OUTPUT);
}

void loop() {
  fade(255,0,0,  0,255,0,  2000); // Vermelho → Verde
  fade(0,255,0,  0,0,255,  2000); // Verde → Azul
  fade(0,0,255,  255,0,0,  2000); // Azul → Vermelho
}

🍓 Raspberry Pi — Python

led_rgb_pi.py
import RPi.GPIO as GPIO
import time

PIN_R, PIN_G, PIN_B = 17, 27, 22
GPIO.setmode(GPIO.BCM)
for p in [PIN_R, PIN_G, PIN_B]:
    GPIO.setup(p, GPIO.OUT)

pwm_r = GPIO.PWM(PIN_R, 1000); pwm_r.start(0)
pwm_g = GPIO.PWM(PIN_G, 1000); pwm_g.start(0)
pwm_b = GPIO.PWM(PIN_B, 1000); pwm_b.start(0)

def cor(r, g, b):
    pwm_r.ChangeDutyCycle(r/255*100)
    pwm_g.ChangeDutyCycle(g/255*100)
    pwm_b.ChangeDutyCycle(b/255*100)

try:
    while True:
        cor(255,0,0); time.sleep(0.6)
        cor(0,255,0); time.sleep(0.6)
        cor(0,0,255); time.sleep(0.6)
except KeyboardInterrupt:
    pwm_r.stop(); pwm_g.stop(); pwm_b.stop()
    GPIO.cleanup()

🏆 Para ir mais longe

Kit B 37 · PR.FT6_15 · Arduino UNO · Raspberry Pi · Início · led.dge.medu.pt