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)