Biblioteca Arduino/ESP32 para controle de LEDs com efeitos não-bloqueantes, callbacks, código Morse e sequências personalizadas.
Autor: professorThiago
| Recurso | JLed | BlinkControl | ezLED | Led |
|---|---|---|---|---|
| Piscar | ✅ | ✅ | ✅ | ✅ |
| Respirar (fade suave) | ✅ | ✅ | ❌ | ✅ |
| Fade entrada/saída | ✅ | ✅ | ✅ | ✅ |
| Strobe | ❌ | ❌ | ❌ | ✅ |
| Heartbeat | ❌ | ❌ | ❌ | ✅ |
| Código Morse | ❌ | ❌ | ❌ | ✅ |
| Sequência personalizada | ❌ | ✅ | ❌ | ✅ |
| Callbacks (aoTerminar) | ❌ | ❌ | ❌ | ✅ |
| Brilho mínimo/máximo | ❌ | ❌ | ❌ | ✅ |
| Progresso do efeito | ❌ | ❌ | ❌ | ✅ |
| API em português | ❌ | ❌ | ❌ | ✅ |
lib_deps =
https://github.com/professorThiago/Led#include <Led.h>
Led led(2); // GPIO 2, PWM habilitado
void setup() {
led.iniciar();
led.aoTerminar([]() { Serial.println("Pronto!"); });
led.piscar(200, 200, 5); // 5 piscadas e chama o callback
}
void loop() { led.atualizar(); }Led led(pino); // PWM habilitado, canal LEDC 0
Led led(pino, false); // digital (sem fade/respirar)
Led led(pino, true, 1); // PWM no canal LEDC 1led.inverter(true); // LED ativo em LOW (cátodo comum)
led.brilhoMinimo(10); // nunca apaga completamente
led.brilhoMaximo(200); // limite de brilholed.ligar(); // liga no brilho máximo
led.desligar(); // desliga
led.alternar(); // toggle
led.brilho(128); // brilho direto (0–255)
led.parar(); // para o efeito atualled.piscar(); // 500ms/500ms, infinito
led.piscar(100, 900); // flash rápido, infinito
led.piscar(300, 300, 5); // 5 piscadas e paraled.respirar(); // 2s por ciclo, infinito
led.respirar(1000, 3); // 1s por ciclo, 3 vezesled.fadeEntrada(1500); // sobe em 1,5s (1 vez)
led.fadeSaida(1000); // desce em 1s (1 vez)
led.fadeEntrada(500, -1); // sobe infinitamenteled.strobe(); // 50ms, infinito
led.strobe(30, 20); // 20 flashes a cada 30msled.heartbeat(); // 60 BPM, infinito
led.heartbeat(80, 10); // 80 BPM, 10 batidasled.morse("SOS"); // velocidade padrão (100ms por ponto)
led.morse("ESP32", 80); // mais rápido
led.morse("OK", 150); // mais lentoSuporta: letras A–Z, números 0–9 e espaço.
PassoSequencia seq[] = {
{255, 100}, // brilho 255 por 100ms
{ 0, 80}, // apagado por 80ms
{255, 100},
{ 0, 500}, // pausa de 500ms
};
led.sequencia(seq, 4); // 1 vez
led.sequencia(seq, 4, 3); // 3 vezes
led.sequencia(seq, 4, -1); // infinito| Valor | Comportamento |
|---|---|
-1 |
Infinito — roda até chamar parar() |
1 |
Uma vez (padrão para fade) |
n |
Exatamente n vezes, depois dispara aoTerminar() |
// Chamado quando um efeito finito termina
led.aoTerminar([]() { Serial.println("Feito!"); });
// Chamado quando o LED muda entre ligado/desligado
led.aoMudar([]() { Serial.println("Mudou!"); });Use aoTerminar() para encadear efeitos automaticamente:
led.aoTerminar([]() {
led.respirar(1000, 2); // começa a respirar ao terminar o piscar
});
led.piscar(200, 200, 3);led.estaLigado() // true se brilho > 0
led.brilhoAtual() // 0–255
led.estaEmEfeito() // true se algum efeito está rodando
led.progresso() // 0–100% do ciclo atual
led.ciclosRestantes() // repetições restantes (-1 = infinito); platformio.ini — se usar múltiplos LEDs PWM, use canais diferentes
build_flags =
-DLED_CANAL_LEDC_PADRAO=0 ; canal padrão (0–15)
-DLED_FREQ_PWM=5000 ; frequência em Hz
-DLED_RESOLUCAO_PWM=8 ; resolução em bitsMúltiplos LEDs com PWM:
Led ledVerde(5, true, 0); // canal LEDC 0
Led ledVermelho(6, true, 1); // canal LEDC 1
Led ledAzul(7, true, 2); // canal LEDC 2| Exemplo | Descrição |
|---|---|
01_Basico |
Controle básico via Monitor Serial |
02_Efeitos |
Demonstração de todos os efeitos |
03_Callbacks |
Encadeamento de efeitos com callbacks |
04_Sequencia |
Padrões personalizados (notificação, alerta, sucesso) |
05_Morse |
Transmissão de mensagens em código Morse |
MIT © 2026 professorThiago