Neste post vou apresentar o circuito do sequencial de leds com Arduino, um projeto que você pode fazer com componentes baratos e muito fáceis de encontrar.

O sequencial de leds funciona da seguinte maneira: os leds vão piscando alternadamente da esquerda para a direita e quando chegam na extremidade mudam o sentido, piscando da direita para a esquerda.

A velocidade com que eles piscam é determinada por um potenciômetro rotativo, e você pode utilizar esse projeto para fins educativos ou, com pequenas alterações na ligação dos leds, utilizar em projetos de decoração, árvores de natal, iluminação de gabinetes, etc.

Circuito com Arduino Uno

No circuito, utilizei 10 resistores de 10K ohms e 10 leds vermelhos, e nas extremidades, resistores de 4,7 K apenas para dar um efeito diferente, ou seja, com uma resistência menor, os leds vão piscar com mais intensidade.

Uma outra opção é vc colocar por exemplo leds de outras cores nas extremidades (verde, amarelo, etc).

O potenciômetro utilizado para controle do “movimento” é de 10K ohms, mas pode ser utilizado um de menor valor.

Não esqueça de, SEMPRE, desligar o cabo usb ou o conector de força quando estiver montando o circuito, ok?

No circuito abaixo utilizamos uma placa Arduino Uno mas o esquema pode ser facilmente reaproveitado para usar com outras placas como o Arduino Mega 2560 e o Arduino Nano, entre outros.

Circuito sequencial de leds arduino

Observe que o pino central do potenciômetro está conectado na porta analógica A2.

Isso faz com que o valor lido do potenciômetro, entre 0 e 1024, seja depois convertido e usado para determinar o ritmo em que os leds vão piscar.

Quem tem o livro Arduino Básico vai notar que o código é praticamente igual ao apresentado no livro (Projeto 6). Fiz algumas alterações de nomes de variáveis e coloquei uma linha para escrever o valor da entrada analógica na saída serial, apenas para fins de acompanhamento.

Programa Sequencial de Leds com Arduino

O programa não usa nenhuma biblioteca do Arduino em especial. Usamos apenas as portas digitais para conexão do led e uma porta analógica que vai ler o valor do potenciômetro conectado na placa.

//Programa: Sequencial de Leds com Arduino
//Baseado no projeto sequencial de leds do Livro 
//Arduino Basico - Autor Michael Roberts
//Alteracoes: Arduino e Cia

//Cria um array para os pinos dos Leds
byte Pinosled[]={4,5,6,7,8,9,10,11,12,13};

int ledDelay; / Intervalo entre as alterações

int direcao = 1; //Direcao do "movimento"

int ledatual = 0;

unsigned long changeTime;

//Pino analogico 2 definido como entrada para o potenciometro
int potPin = 2; 

void setup()
{
  Serial.begin(9600); //Inicializa a comunicacao serial
  for (int x=0; x<10; x++) //Loop que define todos os pinos como saída
  {
    pinMode(Pinosled[x],OUTPUT);
  }
  changeTime=millis();
}

void loop()

{
  //Varia o valor de ledDelay conforme o valor do potenciometro, 
  //alterando a velocidade do efeito
  ledDelay = analogRead(potPin); 

  //Escreve o valor de leitura do potenciometro na saida serial
  Serial.println(ledDelay); 

  //Verifica se já transcorreram ledDelay ms desde a última alteração
  if ((millis() - changeTime) > ledDelay) 

  {
    changeLED();
    changeTime = millis();
  }
}

void changeLED()
{
  for (int x=0; x<10; x++)   //Apaga todos os LEDs
  {
    digitalWrite(Pinosled[x], LOW);
  }
  digitalWrite(Pinosled[ledatual], HIGH); //Acende o LED atual
  ledatual += direcao;  //incrementa de acordo com o valor de direction
  //altera a direção se tivermos atingido o fim
  if (ledatual == 9) {direcao = -1;}
  if (ledatual == 0) {direcao = 1;}
}

Experimente abrir o serial monitor da IDE do Arduino, girar o potenciômetro e veja como os valores vão se alterando, conforme a figura abaixo:

Sequencial de leds

Os valores mostrados se referem ao valor lido do potenciômetro pela porta analógica. A faixa vai de 0 a 1023.

Abaixo, você confere um vídeo deste projeto em funcionamento:


Gostou do projeto Sequencial de Leds com Arduino? Confira outros posts utilizando placas arduino aqui mesmo no Arduino e Cia!

4.3/5 - (7 votes)