Projeto
2 - Semáforo
Olá pessoal, agora vamos fazer um pequeno projeto, um
semáforo que irá do verde ao vermelho, passando pelo amarelo e, que retornará ao
vermelho depois de um intervalo de tempo. Este projeto poderá ser utilizado em
uma maquete com carinhos simulando uma pequena cidade ou mesmo uma estrada de
ferro.
Os códigos serão todos comentados para melhor
entendimento, podendo ser retirados após a compreensão de cada linha. Bom
trabalho !!!
Componentes
necessários
1 Protobord
1 LED Amarelo
1 LED Verde
1 LED Vermelho
3 Resistor de 100 ohms*
Fios jumper
*Esse valor pode ser diferente, dependendo do LED que
você utilizar.
Conectando
os componentes
Primeiro,
certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, pegue sua protoboard, os LED, os resistor e os fios, e conecte tudo como
mostra a figura.
Não
importa se você utiliza fios de cores diferentes ou furos diferentes na protoboard,
desde que os componentes e os fios estejam conectados na mesma ordem da figura.
Tenha cuidado ao inserir os componentes na protoboard. Caso sua protoboard seja
nova, a superfície dos furos ainda estará rígida. A não inversão cuidadosa dos
componentes pode resultar em danos.
Certifique-se
de que seus LED’s estejam conectado corretamente, com o terminal (ou perna)
mais longo conectado aos pinos digital 8, 9 e 10 do arduino.
Quando
você estiver seguro de que tudo foi conectado corretamente, ligue seu Arduino e
conecte o cabo USB.
Agora vamos ao código
Abra
seu IDE do Arduino e digite o seguinte código:
//
Projeto 2 – Semáforo
int
ledDelay = 10000; // Espera entre as alterações
int
vermelhoPin = 10; // Declaramos uma variável inteira com valor igual a 10
(conectada no pino 10 do Arduino)
int
amareloPin = 9; // Declaramos uma variável inteira com valor igual a 9
(conectada no pino 9 do Arduino)
int
verdePin = 8; // Declaramos uma variável inteira com valor igual a 8(conectada
no pino 8 do Arduino)
void
setup() {
pinMode(vermelhoPin, OUTPUT); // Define vermelhoPin como
pino de saída
pinMode(amareloPin,
OUTPUT); // Define amareloPin como pino de saída
pinMode(verdePin,
OUTPUT); // Define verdePin como pino de saída
}
void
loop() {
digitalWrite(vermelhoPin, HIGH); // Acende a luz vermelha
delay(ledDelay); // Espera 5 segundos
digitalWrite(amareloPin, HIGH); // Acende a luz amarela
delay(2000); // Espera 2 segundos
digitalWrite(verdePin, HIGH); // Acende a luz verde
digitalWrite(vermelhoPin, LOW); // Apaga a luz vermelha
digitalWrite(amareloPin, LOW); // Apaga a luz amarela
delay(ledDelay); // Espera ledDelay milissegundos
digitalWrite(vermelhoPin, HIGH); // Acende a luz vermelha
digitalWrite(verdePin, LOW); // Apaga a luz verde
delay(2000); // Espera 2 segundos
digitalWrite(amareloPin, LOW); // Apaga a luz amarela
// Agora nosso loop se repete
}
Para certificar se o código está
correto pressione o botão Verify/Compile. Se
tudo estiver correto pressione o botão Upload
para fazer o upload do código para seu Arduino. Pronto, no seu segundo
projeto você verá um
semáforo que irá do verde ao vermelho, passando pelo amarelo e, que retornará
depois de um intervalo de tempo.
Vídeo
do projeto pronto
- Se você gostou do post,
por favor comente! Nos dê
um feedback, isso nos incentiva a continuar! :)
- Curta nossa fan page !
- Baixe o APP Faça Com Arduino e carregue para onde você for os projetos. É simples. É fácil !!
Na hora de compilar o meu esta aparecendo este erro:
Binary sketch size: 1.210 bytes (of a 32.256 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00
O que há de errado?
Obrigado pelo comentário Roberto. O mais correto a ser feito é desinstalar o Arduino e instala-lo novamente em outra porta USB. Comigo isso funcionou certinho (era na porta 3 agora estou utilizando na COM 2).
ExcluirOlá tudo bem? Gostei muito do seu blog. Tem coisas interessantes! Quanto ao projeto em questão tenho algumas observações a fazer:
ResponderExcluirA ordem de acendimento das luzes está invertida. Num semáforo real a sequência seria Verde > Amarelo > Vermelho.
Não entendi o uso prático da linha " int ledDelay = 10000; // Espera entre as alterações" ( acho mais viável a utilização do tempo em milisegundos em que se deseja que o led fique aceso em cada cor).
Segue a minha adaptação do seu código:
// Projeto 2 – Semáforo
int vermelhoPin = 7; // Declaramos uma variável inteira com valor igual a 7 (conectada no pino 7 do Arduino)
int amareloPin = 6; // Declaramos uma variável inteira com valor igual a 6 (conectada no pino 6 do Arduino)
int verdePin = 5; // Declaramos uma variável inteira com valor igual a 5 (conectada no pino 5 do Arduino)
void setup() {
pinMode(vermelhoPin, OUTPUT); // Define vermelhoPin como pino de saída
pinMode(amareloPin, OUTPUT); // Define amareloPin como pino de saída
pinMode(verdePin, OUTPUT); // Define verdePin como pino de saída
}
void loop() {
digitalWrite(verdePin, HIGH); // Acende a luz verde
delay(5000); // Espera 5 segundos
digitalWrite(verdePin, LOW); // Apaga a luz verde
digitalWrite(amareloPin, HIGH); // Acende a luz amarela
delay(2000); // Espera 2 segundos
digitalWrite(amareloPin, LOW); // Apaga a luz amarela
digitalWrite(vermelhoPin, HIGH); // Acende a luz vermelha
delay(4000);
digitalWrite(vermelhoPin, LOW); // Apaga a luz vermelha
// Agora nosso loop se repete
}
Um abraço.
Amigão, Você esqueceu de definir que o led vermelho apague quando o led amarelo acender. vlw.
ResponderExcluiramigão vc pode me informar como declaro um for(variavel) para o led ficar piscando
ResponderExcluir