Introdução
Bem-vindo ao seu primeiro projeto com PWM (Modulação por Largura de Pulso)! Neste tutorial, vamos construir um circuito simples que atenua suavemente um LED, do apagado ao brilho máximo e vice-versa. Este é um projeto clássico para iniciantes em Arduino que ensina como usar analogWrite() para controlar brilho, velocidade de motores ou qualquer dispositivo que responda a uma tensão média variável.
Usaremos o Velxio, um simulador de circuitos online com suporte analógico preciso (SPICE). Nenhum hardware necessário – apenas seu navegador! Você pode acompanhar, editar o código e ver os resultados instantaneamente.

Montagem do Circuito
Vamos analisar os componentes e a fiação deste projeto.
Componentes
| Componente | Quantidade | Observações |
|---|---|---|
| Arduino Uno | 1 | O cérebro da operação |
| LED (qualquer cor) | 1 | Usaremos um LED azul |
| Resistor (220 Ω) | 1 | Resistor limitador de corrente (não mostrado no esquema, mas recomendado) |
| Fios jumper | 2 | Para as conexões |
Fiação
- Anodo do LED (perna mais longa) → Conecte ao pino 9 do Arduino (um pino com capacidade PWM).
- Catodo do LED (perna mais curta) → Conecte ao GND do Arduino.
Importante: Sempre use um resistor limitador de corrente (tipicamente de 220 Ω a 1 kΩ) em série com o LED para evitar queimá-lo. No simulador Velxio, o modelo do LED inclui resistência interna, mas na vida real você deve adicionar um.
Aqui está a fiação em detalhes:
- Fio 1 (azul): Do pino 9 do Arduino ao anodo do LED (A).
- Fio 2 (preto): Do catodo do LED (C) ao GND do Arduino.
É isso! Apenas duas conexões. O pino 9 do Arduino pode emitir um sinal PWM, que usaremos para variar o brilho do LED.

Explicação do Código
Abra o editor de código no Velxio. Você verá o seguinte sketch do Arduino:
// Fade LED with PWM
// Smoothly fade LED brightness
const int LED_PIN = 9; // PWM pin
int brightness = 0;
int fadeAmount = 5;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
analogWrite(LED_PIN, brightness);
brightness += fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
delay(30);
}
Como Funciona
LED_PIN = 9: Usamos o pino 9 porque ele suporta PWM (marcado com~no Arduino Uno).brightness: Esta variável armazena o valor atual do PWM (0 a 255). 0 = apagado, 255 = brilho máximo.fadeAmount: O quanto o brilho muda a cada ciclo. Positivo = aumentando, negativo = diminuindo.setup(): Define o pino do LED como saída.loop():analogWrite(LED_PIN, brightness)emite o sinal PWM.brightness += fadeAmountaumenta ou diminui o brilho.- O
ifverifica se o brilho chegou a 0 ou 255. Se sim, inverte a direção negandofadeAmount. delay(30)desacelera a atenuação para que você possa vê-la.
Conceitos Principais
- PWM (Modulação por Largura de Pulso): Uma técnica onde o pino digital liga e desliga rapidamente. A tensão média (e, portanto, o brilho do LED) depende do ciclo de trabalho (tempo ligado vs. tempo desligado).
analogWrite()define o ciclo de trabalho. analogWrite(): Aceita valores de 0 (sempre desligado) a 255 (sempre ligado).pinMode(): Configura o pino como saída (ou entrada).delay(): Pausa o programa por milissegundos. Sem ele, a atenuação seria rápida demais para ser vista.
Problemas Comuns e Dicas de Depuração
-
LED não acende?
- Verifique se o LED está conectado corretamente (anodo ao pino 9, catodo ao GND).
- Certifique-se de que o código foi carregado (clique no botão Executar na barra de ferramentas).
- Confirme se
LED_PINcorresponde ao pino real usado.
-
LED fica no brilho máximo?
- Certifique-se de estar usando um pino com capacidade PWM (3, 5, 6, 9, 10, 11 no Uno). O pino 13 não é PWM.
- Verifique se
analogWrite()está sendo chamado, e nãodigitalWrite().
-
Atenuação muito rápida ou muito lenta?
- Ajuste o valor de
delay(30). Maior = atenuação mais lenta. - Altere
fadeAmountpara controlar o tamanho do passo (ex.: 1 para muito suave, 10 para mais rápido).
- Ajuste o valor de
-
Simulador não responde?
- Use o botão Reset na barra de ferramentas da tela.
- Atualize a página se necessário.

Extensões Sugeridas
Depois de dominar a atenuação básica, tente estes desafios:
- Múltiplos LEDs: Adicione mais dois LEDs nos pinos 10 e 11. Faça-os atenuar em sequência ou em velocidades diferentes.
- Controle por botão: Adicione um botão de pressão para iniciar/parar a atenuação.
- Controle de velocidade com potenciômetro: Use um potenciômetro para ajustar a velocidade da atenuação (substitua
delay(30)por uma variável lida de uma entrada analógica). - LED RGB: Use um LED RGB e atenue através de diferentes cores controlando três pinos PWM.
- Monitor serial: Imprima o valor do brilho no Monitor Serial para depuração.
Experimente Você Mesmo!
Pronto para ver em ação? Abra o exemplo ao vivo no Velxio:
👉 Inicie o exemplo de Atenuação de LED
Você pode editar o código, alterar a velocidade da atenuação ou até adicionar novos componentes. O simulador roda inteiramente no seu navegador – sem downloads, sem configuração.
Boa atenuação!