Semáforo interativo de LED
Projeto 4 – Semáforo
Já está sabendo tudo de LEDs e como ligá-los? Então vamos montar esse projeto maior para juntar várias coisas que aprendemos até agora.
Este projeto irá simular um semáforo de carros e pedestres. Serão três LEDs para os carros e dois para os pedestres. A sequência inicia com o LED verde dos carros aceso e vermelho para pedestres. O semáforo dos carros então passa para cor amarela indo para cor vermelha, juntamente com o LED verde de pedestres. O LED vermelho dos pedestres então pisca e a sequência volta ao início.
Material necessário
2x LED Vermelho 5mm
2x LED Verde 5mm
1x LED Amarelo 5mm
5x Resistor 220 ohm
1x Protoboard
11x Jumper macho-macho
1x Cabo USB
1x Placa Uno
Montagem do circuito
O grande desafio deste projeto está em montar os LEDs corretamente, pois o circuito consiste de mais LEDs, mais resistores e mais jumpers. Agora faremos uso de uma das linhas inferiores da protoboard, conectando o pino GND (negativo) do Arduino na linha azul da protoboard.
A maioria das pessoas, mesmo makers experientes, tem que voltar para esta parte do projeto e refazer, não se preocupe. Se você conseguir fazer a montagem funcionar na primeira tentativa, parabéns!
Programa Projeto 4 Semáforo
Esse código, apesar de parecer extenso, é simples. Não tem nada que ainda não foi visto neste guia. Procure entender o código e ver o que irá acontecer a partir dele.
Como todo código, começamos definindo as variáveis, os pinos utilizados e, por fim, o loop() que fica repetindo continuamente.
Se estiver com problemas para entender, você pode ler os comentários dentro do programa e/ou voltar nos projetos 1 e 2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | // Projeto 4 - Semáforo int pedVerde = 9; // Define os pinos que serao utilizados int pedVermelho = 8; int carroVerde = 12; int carroAmarelo = 11; int carroVermelho = 10; void setup() // Define os pinos como saidas { pinMode(pedVerde, OUTPUT); pinMode(pedVermelho, OUTPUT); pinMode(carroVerde, OUTPUT); pinMode(carroAmarelo, OUTPUT); pinMode(carroVermelho, OUTPUT); digitalWrite(carroVerde, HIGH); // Coloca na posição inicial. Somente o verde dos carros e o vermelho dos pedestres acesos digitalWrite(carroVerde, LOW); digitalWrite(carroVerde, LOW); digitalWrite(pedVerde, LOW); digitalWrite(pedVermelho, HIGH); } void loop() { digitalWrite(carroVerde, HIGH); // Acende o verde dos carros e o vermelho dos pedestres digitalWrite(pedVermelho, HIGH); delay(5000); // Aguarda 5 segundos digitalWrite(carroVerde, LOW); digitalWrite(carroAmarelo, HIGH); // apaga o verde dos carros e acende o amarelo delay(3000); // aguarda mais 3 segundos digitalWrite(carroAmarelo, LOW); // apaga o amarelo dos carros e acende o vermelho digitalWrite(carroVermelho, HIGH); digitalWrite(pedVermelho, LOW); // apaga o vermelho dos pedestres e acende o verde digitalWrite(pedVerde, HIGH); delay(5000); // aguarda mais 5 segundos digitalWrite(pedVerde, LOW); for ( int x = 0; x<5; x++) // Pisca o vermelho dos pedestres { digitalWrite(pedVermelho, HIGH); delay(250); digitalWrite(pedVermelho, LOW); delay(250); } digitalWrite(carroVermelho, LOW); } |
Conseguiu pegar a lógica do programa? Você pode alterá-la conforme bem entender e fazer a sua própria lógica de semáforo!
Possíveis erros
Caso o projeto não funcione verifique alguns dos possíveis erros:
- Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a conexão;
- Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
- Verifique se o LED não está conectado invertido;
- Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
- Monte o circuito de uma maneira alternativa usando outros furos e posições na protoboard;
- Mude o tempo que o LED amarelo dos veículos permanece aceso mudando o valor na programação na linha delay(3000); por exemplo: delay(6000);