Arduino – Piscando LEDs em sequência – Sketch 01

Arduino – Piscando LEDs em sequência

Neste artigo vamos continuar a explorar o Arduino criando um novo projeto e utilizando componentes eletrônicos que não usamos ainda.

Nosso sketch de hoje é um projeto bem simples, no qual teremos quatro LEDs que acenderão e apagarão de forma sequencial. Neste projeto vamos precisar de alguns componentes eletrônicos, conforme mostra a listagem a seguir:

  • Uma placa de testes (breadboard) onde os componentes serão conectados.
  • Quatro LEDs, que podem ser de mesma cor ou de cores variadas (vermelho, verde, amarelo ou laranja) – a seu gosto.
  • Quatro resistores de 150Ω (usarei resistores de 1KΩ, pois são os que eu tinha disponíveis na hora de executar o projeto; os LEDs brilharão um pouco menos mas ainda assim acenderão).
  • Fios diversos para conexão (jumpers)
  • Arduíno UNO

O diagrama do circuito que iremos montar pode ser visto na figura a seguir, criada com o software livre Fritzing:

Esquema de ligação dos componentes no Arduino

Esquema de ligação dos componentes

 

Você pode ver pelo diagrama que cada LED é conectado a um dos pinos digitais do Arduino, os quais serão configurados como saída via código, e há um resistor limitador de corrente conectado entre cada LED e seu respectivo pino. Esse resistor visa a proteger os LEDs contra excesso de corrente que pode danificá-los (e eventualmente ao Arduíno também). Veja no quadro abaixo como calcular o valor da resistência para esses resistores:

Vamos calcular os valores dos resistores com a fórmula: R = (Vop – Vled) / I Onde Vop é a tensão de operação do circuito, que no caso é de 5V; Vled é a tensão direta no LED, a qual pode variar dependendo da cor; usaremos o valor de 2,0 V, que é a tensão para LEDs verdes geralmente (outras cores possuem tensões menores, à exceção dos LEDs azuis); e I é a corrente máxima que um LED suporta, em Ampères. No caso, é de 20 mA, que equivale a 0,02A.R é o valor da resistência a calcular.Então, temos o seguinte cálculo:R = (5 – 2) / 0,02R = 150 Ω

 

IMPORTANTE: AO CONECTAR OS COMPONENTES ELETRÔNICOS, CERTIFIQUE-SE DE QUE O ARDUINO NÃO ESTEJA ENERGIZADO PARA EVITAR QUE A PLACA SEJA DANIFICADA ACIDENTALMENTE.

Veja uma ilustração de nosso circuito montado na breadboard:

Circuito com arduino na breadboard
Após montado na matriz de contatos, ele ficará conforme mostra a foto abaixo:

Arduino e Matriz de Contatos

Detalhe da mini breadboard com os quatro LEDs:

Acionando LEDs com Arduino

Vamos ao código-fonte do programa usado para fazer os LEDs piscarem em sequência. Digite-o no Arduino IDE:

int leds[] = {8, 9, 10, 11};
int contador = 0;
int timer = 150;
void setup() {
 for (contador = 0; contador < 4; contador++) {
   pinMode(leds[contador], OUTPUT);
 }
}
void loop() {
 for (contador = 0; contador < 4; contador++) {
   digitalWrite(leds[contador], HIGH);
   delay(timer);
   digitalWrite(leds[contador], LOW);
   delay(timer);
 }
}

No código apresentado começamos por declarar um array de LEDs. Poderíamos ter declarado uma variável para cada LED, mas é mais fácil criar um array, onde cada posição irá representar um dos pinos no qual cada LED será conectado. Ao criarmos o array já atribuímos um conjunto de dados com os números dos pinos digitais que serão usados. O array terá quatro posições (para 4 LEDs), numeradas de 0 a 3.

Criamos também uma variável contadora chamada contador que será usada na estrutura de controle que define qual LED acenderá ou apagará em sequência.

Usamos também uma variável chamada timer, a qual define o tempo de intervalo no qual cada LED acenderá e apagará, em milissegundos. A função delay(timer) realiza essa tarefa. Para que um LED acenda usaremos a função digitalWrite(), sendo chamada na forma digitalWrite(leds[contador], HIGH) para que o LED acenda, e para que o LED apague, a função executada será digitalWrite(leds[contador], LOW).

O laço for utilizado faz a contagem entre 0 e 3 com o uso da variável contador, para determinar qual LED será ativado e desativado. A posição 0 equivale ao primeiro valor armazenado no array (pino 8), a posição 1 equivale ao pino 9, e assim por diante.

Após digitar o código no IDE, carregue-o no Arduino, aguarde alguns segundos e verifique se os LEDs piscam sequencialmente. Se piscarem, o trabalho estará concluído. Caso contrário, verifique as conexões na breadboard e também o código utilizado.

É isso aí, no próximo artigo iremos construir mais um projeto bem interessante!

 

Sobre Fábio dos Reis (1329 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

7 Comentários em Arduino – Piscando LEDs em sequência – Sketch 01

  1. olha Fábio boa noite estou querendo uma dica sua preciso de um servidores de e-mail para o meu linux com interface web vc teria alguns que poderia aconselhar para mim fazer uns testes? Desde já agradeço.

  2. Fábio, boa noite!

    Estou tentando fazer um projeto bem parecido com o seu, porém, a diferença esta na quantidade de LED’s, estou tentando utilizar 29 LED’s, porém, aparentemente a placa Arduino UNO não suporta essa quantidade de LED’s.

    Você pode me dar uma dica de qual placa utilizar?

    Obrigado.

  3. Igor Andrade // 06/02/2016 em 22:31 // Responder

    Fiz o meu parecido com o da prática, porém com apenas 3 LEDs e, consequentemente, 3 posições: 8, 9 e 10.
    Contudo, o pino da primeira posição do código sempre emite um brilho maior que o restante.
    Quando alternei a conexão de dois dos jumpers no arduino, o LED que anteriormente tinha MENOR brilho passou a ter MAIS brilho que os demais enquanto o que tinha MAIS brilho passou a ter MENOS.
    Já troquei a ordem dos pinos no código para 10, 9 e 8 e o LED ligado ao pino 10 passou a emitir mais brilho que os outros.
    Ou seja, essa diferença de brilho não é causada por uma diferença de resistência entre os jumpers, mas o que é?

  4. João Dimas // 23/06/2016 em 14:07 // Responder

    Caro Silvano,

    Estou precisando de uma ajuda para um projeto escolar da minha filha no arduino, onde estou tomando um coro na programação.

    Penso, que poderia me ajudar por favor.

    Fiz uma programação cujo os leds 1 e 2 precisam ficar piscando enquanto a rotina dos outros 25 leds se acender na sequência.
    Porem não consigo fazer esses leds piscarem sem parar, eles piscam e logo param para continuar a sequência dos outros leds.
    Como se fosse um loop dentro do void loop, se puder me ajudar agradeço muito.
    joao.dimas@usiminas.com

  5. João Dimas // 23/06/2016 em 15:06 // Responder

    Estou precisando de uma ajuda para um projeto escolar da minha filha no arduino 2560 mega, onde estou tomando um coro na programação.

    Penso, que poderia me ajudar por favor.

    Fiz uma programação cujo os leds 1 e 2 precisam ficar piscando enquanto a rotina dos outros 25 leds se acender na sequência.
    Porem não consigo fazer esses leds piscarem sem parar, eles piscam e logo param para continuar a sequência dos outros leds.
    Como se fosse um loop dentro do void loop, se puder me ajudar agradeço muito.
    joao.dimas@usiminas.com

  6. Ola bom dia preciso de ajuda para montar um projeto em que o arduino liga um led varais vezes e depois de um delay de vários minutos ou ate mesmo horas e ai torna a acionar os leds e assim por diante

Escreva um comentário

Seu e-mail não será divulgado


*