Uma das coisas mais legais de mexer com Arduino é ver seu código “ganhando vida”. A primeira LED que acende é uma vitória.
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
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);
}
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:
Eu criei 6 métodos:
void rua1e3Aberta()
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()
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()
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
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()
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()
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)