Código de Pesquisa

Lição 98-8: Luz de caminhada com botão e LEDs com Arduino

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.

5 leds on breadboard with push button shown connected to Arduino UNO
5 leds on breadboard with push button shown connected to Arduino UNO

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

Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button

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

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

Imagens

wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
5 LEDs em breadboard com botão de pressão mostrado conectado ao Arduino UNO
5 LEDs em breadboard com botão de pressão mostrado conectado ao Arduino UNO
940-Lessson 98-LED-8: Arduino code walking LED light with push button
Idioma: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Arquivos📁

Bibliotecas do Arduino (zip)

Manual do Usuário