DEV Community

Cover image for Farol de LED's - Arduino
Johnny Meneses
Johnny Meneses

Posted on • Edited on

Farol de LED's - Arduino

Uma das coisas mais legais de mexer com Arduino é ver seu código “ganhando vida”. A primeira LED que acende é uma vitória.

LED Vermelho

Um bom exemplo pra começar a brincar com luzes no Arduino é justamente fazer um semáforo. A ideia é simples, três cores: vermelho, amarelo e verde sendo acesas em sequência. Ainda é possível adicionar um modo de atenção com um amarelo piscante.

O projeto abaixo é um pouco maior, em termos de componentes e linhas de código, mas o princípio é o mesmo. Eu fiz um cruzamento onde o farol de uma das ruas só acende se o farol da outra estiver fechado

Lista de Componentes:
1 – Arduino Uno R3 (ou similar)
4 – LED’s na cor vermelha
4 – LED’s na cor amarela
4 – LEd’s na cor Verde
12 – Resistors de 220 Ω

Pra ficar mais fácil, eu defini um nome para cada LED e sua respectiva porta:

#define red1    13
#define yel1    12
#define green1  11
#define red2    10
#define yel2    9
#define green2  8
#define red3    7
#define yel3    6
#define green3  5
#define red4    4
#define yel4    3
#define green4  2
Enter fullscreen mode Exit fullscreen mode

Assim, na hora de fazer a instalação, ou seja, informar ao Arduino qual porta será usada e com qual finalidade, ficará mais fácil:

void instalaLed()
{   
  pinMode(red1, OUTPUT);
  pinMode(yel1, OUTPUT);
  pinMode(green1, OUTPUT);

  pinMode(red2, OUTPUT);
  pinMode(yel2, OUTPUT);
  pinMode(green2, OUTPUT);

  pinMode(red3, OUTPUT);
  pinMode(yel3, OUTPUT);
  pinMode(green3, OUTPUT);

  pinMode(red4, OUTPUT);
  pinMode(yel4, OUTPUT);
  pinMode(green4, OUTPUT);

}
Enter fullscreen mode Exit fullscreen mode

Eu preferi criar um método para instalação e informar este método dentro do void setup(). Acredito que fica mais organizado.

O esquema do projeto ficou assim:
Alt Text

Eu criei 6 métodos:

void rua1e3Aberta()
Enter fullscreen mode Exit fullscreen mode

Neste método o tráfego entre as ruas 1 e 3 está livres, com suas respectivas LED’s verdes ligadas. Nas ruas 2 e 4, o farol está fechado.

void rua1e3Fechando()
Enter fullscreen mode Exit fullscreen mode

Neste método, começa a transição de sinalização. O vermelho das ruas 2 e 4 permanece ligado, entretanto, neste momento os faróis verdes são desligados e os faróis amarelos das ruas 1 e 3 são acesos, indicando que o ciclo está próximo de fechar.

void tudoFechado()
Enter fullscreen mode Exit fullscreen mode

Eu poderia simplesmente migrar do vermelho para o verde, e liberar o tráfego na outra rua, mas achei que ficaria abrupto. Fiz esse método para manter os quatro faróis vermelhos ligados por alguns segundos, antes de chamar a próxima sequência.

rua2e4Aberta e rua2e4Fechando
Enter fullscreen mode Exit fullscreen mode

São basicamente os mesmos métodos das ruas 1 e 3, com o mesmo comportamento, só que agora referenciando o outro lado do cruzamento.

void tudoDesligado()
Enter fullscreen mode Exit fullscreen mode

Achei que seria interessante um método que eu poderia desligar todas as luzes, antes de chamar o Amarelo Piscante. Este método serve pra isso.

void amareloPiscante()
Enter fullscreen mode Exit fullscreen mode

Este é o sinal de alerta para tirar o pé do acelerador e passar com calma e atenção no cruzamento. Neste método, as luzes amarelas se alternam entre ligado e ligado em um looping que será executado 10 vezes.

Para ver o projeto funcionando, acesse o link no meu Tinkercad

O código fonte completo está no meu GitHub:

Top comments (0)