Introdução
Bem-vindo ao seu primeiro projeto de entrada com Arduino! Neste tutorial, você construirá um circuito onde um botão controla um LED. Ao pressionar o botão, o LED acende; ao soltar, o LED apaga. Este projeto simples introduz a leitura de entradas digitais, o uso de resistores pull-up internos e a escrita de código Arduino limpo.
Usaremos o simulador no navegador do Velxio, que oferece um ambiente preciso em SPICE para que você possa testar seu circuito sem nenhum hardware. Vamos mergulhar!
Passo a Passo do Circuito

O circuito consiste em três componentes principais:
- Arduino Uno – o cérebro da operação.
- Botão – um interruptor momentâneo que conecta dois pinos quando pressionado.
- LED Vermelho – o dispositivo de saída.
Detalhes da Montagem
-
Botão ao Arduino:
- Uma perna do botão (pino
1.l) conecta-se ao pino digital 2 do Arduino via um fio azul (#00aaff). - A outra perna (pino
2.l) conecta-se ao GND via um fio preto.
- Uma perna do botão (pino
-
LED ao Arduino:
- O ânodo (perna longa, pino
A) conecta-se ao pino digital 13 do Arduino via um fio vermelho (#ff0000). - O cátodo (perna curta, pino
C) conecta-se ao GND via um fio preto.
- O ânodo (perna longa, pino
Observe que o botão não possui um resistor pull-up externo. Em vez disso, usaremos o resistor pull-up interno do Arduino no código. Quando o botão não está pressionado, o pino de entrada é puxado para HIGH; quando pressionado, ele lê LOW.
Explicação do Código

Aqui está o sketch completo do Arduino:
// Button LED Control
// Press button to turn LED on
const int BUTTON_PIN = 2;
const int LED_PIN = 13;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
int buttonState = digitalRead(BUTTON_PIN);
if (buttonState == LOW) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
Explicação
- Constantes:
BUTTON_PINé definido como 2,LED_PINcomo 13. Usar constantes torna o código mais fácil de ler e modificar. setup():pinMode(BUTTON_PIN, INPUT_PULLUP)configura o pino 2 como uma entrada com o resistor pull-up interno ativado. Isso significa que o pino lê HIGH por padrão e LOW quando o botão é pressionado (conectando-o ao GND).pinMode(LED_PIN, OUTPUT)define o pino 13 como uma saída para acionar o LED.
loop():digitalRead(BUTTON_PIN)lê o estado do botão. Se for LOW (botão pressionado), acendemos o LED comdigitalWrite(LED_PIN, HIGH). Caso contrário, apagamos.
Conceitos Principais
Entrada Digital e Resistores Pull-Up
Quando um pino digital é configurado como entrada, ele lê HIGH (5V) ou LOW (0V). Sem um resistor pull-up ou pull-down, o pino pode flutuar entre estados, causando leituras erráticas. O resistor pull-up interno (tipicamente 20k-50k ohms) garante um HIGH estável quando o botão está aberto. Pressionar o botão conecta o pino diretamente ao GND, sobrepondo o pull-up e dando uma leitura LOW.
Debouncing
Botões mecânicos frequentemente oscilam, causando múltiplas transições rápidas. Neste exemplo simples, ignoramos o debouncing porque o LED responde rapidamente e o efeito é mínimo. Para aplicações mais críticas, você pode adicionar um pequeno atraso ou usar uma biblioteca de debounce.
Uso de Constantes
Definir números de pinos como constantes no início do sketch facilita a alteração da montagem sem precisar procurar no código. Também melhora a legibilidade.
Armadilhas Comuns e Dicas de Depuração
- Montagem do botão: Certifique-se de que uma perna vá para o pino do Arduino e a outra para o GND. Se você conectar ambas as pernas à mesma linha, o botão não funcionará.
- Polaridade do LED: O ânodo (perna longa) deve conectar-se ao pino digital, e o cátodo (perna curta) ao GND. Invertê-los não danificará o LED, mas ele não acenderá.
- Pull-up não ativado: Se você esquecer
INPUT_PULLUPe usarINPUTsimples, o pino flutuará e o LED pode piscar aleatoriamente. - Números de pinos errados: Verifique se o código corresponde à montagem. Neste exemplo, botão no pino 2, LED no pino 13.
Usando o Simulador Velxio

Clique no botão Executar na barra de ferramentas para compilar e iniciar a simulação. Você pode então clicar no botão no canvas para ver o LED responder.

Use a barra de ferramentas do canvas para pausar, redefinir ou ajustar a velocidade da simulação.

Para adicionar mais componentes, abra o seletor de componentes e navegue por categorias como “Entrada” ou “Saída”.

Se você precisar de bibliotecas adicionais (por exemplo, para debouncing), use o Gerenciador de Bibliotecas.
Extensões Sugeridas
Depois de ter o circuito básico funcionando, tente estas melhorias:
- Modo alternado: Modifique o código para que cada pressionamento alterne o LED entre ligado e desligado, em vez de mantê-lo pressionado.
- Múltiplos LEDs: Adicione mais LEDs e botões para criar um painel de entrada simples.
- Debounce: Implemente debounce por software usando um atraso de 50ms ou um temporizador.
- Monitor Serial: Imprima o estado do botão no Monitor Serial para depuração.
- Brilho PWM: Substitua o digital write por
analogWrite()para controlar o brilho do LED com base na duração do pressionamento do botão.
Chamada para Ação
Pronto para construir seu próprio LED controlado por botão? Abra o exemplo ao vivo no Velxio e comece a experimentar: Exemplo de LED com Botão. Nenhum hardware necessário – apenas seu navegador. Boas experiências!