17 de jun. de 2013

Projeto 2 - Semáforo

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 feedbackisso 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 !!





5 comentários:


  1. 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?

    ResponderExcluir
    Respostas
    1. 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).

      Excluir
  2. Olá tudo bem? Gostei muito do seu blog. Tem coisas interessantes! Quanto ao projeto em questão tenho algumas observações a fazer:

    A 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.

    ResponderExcluir
  3. Amigão, Você esqueceu de definir que o led vermelho apague quando o led amarelo acender. vlw.

    ResponderExcluir
  4. amigão vc pode me informar como declaro um for(variavel) para o led ficar piscando

    ResponderExcluir