Lição 98-8: Luz de caminhada com botão e LEDs com Arduino
Este projeto mostra como construir uma "luz caminhante" que avança um passo a cada vez que você pressiona um botão. Em vez de uma luz que funciona com seu próprio temporizador, você obtém controle direto e tátil: cada pressionamento move o LED aceso uma posição para frente e, após o último LED, ele volta ao primeiro. Este é um dos blocos de construção mais úteis no aprendizado de Arduino, porque ensina como combinar uma entrada digital (o botão) com uma máquina de estados rotativa (qual LED está aceso no momento) — um padrão que você reutilizará constantemente.
Depois de entender este padrão, a mesma lógica alimenta uma enorme variedade de projetos reais. Aqui estão algumas ideias práticas que você pode construir com ele:
- Um seletor de menu em um dispositivo em que cada pressionamento destaca a próxima opção.
- Um indicador de etapa sequencial para uma máquina ou processo (etapa 1, etapa 2, etapa 3...).
- Um display de pontuação ou nível que você avança manualmente com um botão.
- Um indicador de "próximo canal" ou "próximo modo" para um controlador de iluminação.
- Um jogo simples ou buzzer de quiz em que os jogadores se revezam para acender a próxima lâmpada.
- Um relé ou sequenciador de carga em que cada pressionamento ativa a próxima saída em ordem.
A principal vantagem em relação a uma luz corrida automática é o controle: nada acontece até você pressionar, então a luz só avança quando você decide. O vídeo também observa que a mesma ideia de alternância e sequenciamento pode acionar um relé para ligar uma luz CA ou controlar um motor, não apenas LEDs (no vídeo em 19:52).
Hardware e Componentes
A lista de peças é curta e barata:
- Uma placa Arduino (Uno, Nano, Mega ou qualquer placa compatível).
- Cinco LEDs — de 5 mm ou 3 mm, de qualquer cor que você goste.
- Cinco resistores limitadores de corrente, de 200 Ω a 1000 Ω (o vídeo usa 1 kΩ).
- Um botão de pressão (um switch tátil momentâneo é ideal).
- Uma protoboard e alguns fios jumper DuPont.
Uma observação rápida sobre os LEDs: o cátodo é o terminal mais curto e o lado com a borda plana, enquanto o ânodo é o terminal mais longo (no vídeo em 03:13). O valor do resistor não é crítico — um resistor maior simplesmente deixa o LED mais fraco, então qualquer valor de cerca de 300 Ω até 1000 Ω funcionará bem (no vídeo em 05:33).
Guia de Ligação
A ligação é essencialmente a mesma de uma luz caminhante padrão de cinco LEDs, com um botão adicionado. O ânodo de cada LED se conecta ao seu próprio pino do Arduino, e cada cátodo se conecta através de seu próprio resistor a um trilho de terra comum na protoboard. Nesta montagem, os LEDs estão ligados aos pinos 3, 4, 5, 6 e 7 (no vídeo em 31:37). O botão é colocado na protoboard com um terminal no terra e o outro terminal no pino 2 — o mesmo pino que o código usa para o botão (no vídeo em 37:04).
Como o código habilita o resistor de pull-up interno do Arduino, nenhum resistor externo é necessário no botão. Quando o botão não está pressionado, o pino lê HIGH, e quando você o pressiona, o pino é puxado para o terra e lê LOW (no vídeo em 14:02).
Explicação do Código
O programa completo está disponível abaixo deste artigo. Aqui focamos nas partes que você realmente vai querer alterar.
No topo do sketch, cada LED e o botão são atribuídos a um pino. É aqui que você personaliza a montagem para corresponder à sua própria ligação:
const int pushButtonPin = 2; // push button pin
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
int LED_ON = LED1; // which LED is currently lit
A variável LED_ON é o coração do projeto. Ela lembra qual LED está aceso no momento, começando em LED1. A cada vez que você pressiona o botão, o código avança LED_ON para o próximo LED da sequência e apaga o anterior, de modo que apenas um LED fica aceso por vez.
Também há um pequeno atraso após cada pressionamento:
delay(200); // debounce / give the user time between presses
Essa pausa de 200 milissegundos impede que um único pressionamento físico seja registrado como vários pressionamentos. Se seu dedo tremer ou o botão parecer muito sensível, aumente esse número; se você quiser uma resposta mais rápida, diminua-o. Esteja ciente de que defini-lo muito baixo pode fazer a luz avançar inesperadamente (no vídeo em 41:20).
A lógica principal está no loop(). Ele lê o botão e, somente quando o botão é pressionado (leitura LOW), avança a luz. A sequência usa uma cadeia de verificações if / else if para passar do LED1 para o LED2 para o LED3, e assim por diante, retornando ao LED1 após o último. Se você quiser mudar a direção ou a ordem dos LEDs, este é o bloco a editar — basta reatribuir qual pino segue qual.
Projeto ao Vivo e Demonstração
Após carregar o código, pressionar o botão acende o primeiro LED; soltá-lo deixa esse LED aceso. O próximo pressionamento move a luz para o segundo LED, depois o terceiro, quarto e quinto, e o pressionamento seguinte retorna ao primeiro — uma rotação contínua (no vídeo em 40:22).
Um bom efeito colateral do atraso de 200 milissegundos é que, se você mantiver o botão pressionado, a luz continua avançando sozinha a cada 200 milissegundos, transformando efetivamente o projeto em uma luz caminhante automática enquanto o botão estiver pressionado (no vídeo em 42:07). Solte o botão e ela para no LED atual. Isso oferece tanto o avanço manual quanto a execução sem as mãos com um único botão.
Se você preferir que a luz funcione automaticamente sem nenhum botão, essa é uma montagem separada. A versão automática é abordada em Lição 98-7: Luz Caminhante Usando Arduino e 5 LEDs.
Projetos relacionados deste vídeo
- Lição 98-1: Como Ligar e Desligar um LED com Arduino
- Lição 98-2: Como Ligar e Desligar um LED Usando um Botão de Pressão com Arduino
- Lição 98-3: Como Ligar/Desligar um LED Alternado Usando um Botão de Pressão com Arduino
- Lição 98-4: Esmaecendo uma Luz LED Usando Arduino: Controle de Brilho
- Lição 98-5: Esmaecer a Luz Quando um Botão É Pressionado Usando Arduino
- Lição 98-6: Jogo de LED Gangorra com Arduino
- Lição 98-7: Luz Caminhante Usando Arduino e 5 LEDs
- Lição 98-9: Medidor de Nível de Tensão de LED Usando Arduino ou luz caminhante com potenciômetro
- Lição 98-10: Semáforo com Arduino
Capítulos
- [00:00] Visão geral dos 10 projetos de LED com Arduino
- [01:22] Introdução ao curso passo a passo de Arduino
- [02:29] Entendendo os LEDs: símbolos, polaridade e pinos
- [03:49] Calculando o resistor limitador de corrente do LED
- [30:47] Luz caminhante com 5 LEDs: fiação e princípio
- [32:52] Código da luz caminhante: pinos, temporização e loop
- [36:41] Avançando a luz com um botão de pressão
- [37:44] Luz caminhante com botão de pressão: explicação do código
- [40:22] Demonstração e ajuste do atraso do pressionamento
- [57:16] Considerações finais e encerramento do curso
This code has not been parsed yet. Please return to the admin panel to parse it.
Coisas que você pode precisar
-
AmazonasSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazonas
-
Amazonas
-
Amazonas
Recursos e referências
-
DocumentaçãoDocumentação para o Kit de Aprendizado 3 em 1 IoT/Carro Inteligente/SunFounderdocs.sunfounder.com
-
Externo
-
Externo
-
Externo
Arquivos📁
Bibliotecas do Arduino (zip)
-
Código fonte do kit de aprendizado Smart Car 3 em 1 da SunFounder
3in1-kit-main-v2.zip12.80 MB
Manual do Usuário
-
Manual de montagem do SunFounder 3-em-1 Arduino Smart CarEste documento mostra a montagem passo a passo do SunFounder 3-em-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB