quarta-feira, 14 de dezembro de 2011

Arduino: Projeto Semáforo

Arduino:
Projeto Semáforo




Para fazer o primeiro projeto Semáforo mostrado no vídeo, você precisará ter:
- 1 Arduino UNO ou Duemilanove (2009);
- 1 Protoboard;
- 4 LEDs vermelhos;
- 4 LEDs verdes;
- 2 LEDs amarelos;
- Fios para protoboards.

Você colocará os LEDs na protoboard e ligará os LEDs no Arduino dessa forma:
LED vermelho do transito da rua 1 na porta 2 (digital) do Arduino;
LED verde do transito da rua 1 na porta 3 (digital) do Arduino;
LED amarelo do transito da rua 1 na porta 4 (digital) do Arduino;
LED vermelho do transito da rua 2 na porta 5 (digital) do Arduino;
LED verde do transito da rua 2 na porta 6 (digital) do Arduino;
LED amarelo do transito da rua 2 na porta 7 (digital) do Arduino;
LED vermelho do pedestre da rua 1 na porta 8 (digital) do Arduino;
LED verde do pedestre da rua 1 na porta 9 (digital) do Arduino;
LED vermelho do pedestre da rua 2 na porta 10 (digital) do Arduino;
LED verde do pedestre da rua 2 na porta 11 (digital) do Arduino.
Não esquecendo de ligar os Catodos dos LEDs (negativo do LED; menor terminal do LED) no GND do Arduino.


O código é:
int vermtran1 =2;
int verdtran1 =3;
int amartran1 =4;
int vermtran2 =5;
int verdtran2 =6;
int amartran2 =7;
int vermped1 =8;
int verdped1 =9;
int vermped2 =10;
int verdped2 =11;

void setup() {
 
  pinMode(vermtran1, OUTPUT);
  pinMode(verdtran1, OUTPUT);
  pinMode(amartran1, OUTPUT);
  pinMode(vermtran2, OUTPUT);
  pinMode(verdtran2, OUTPUT);
  pinMode(amartran2, OUTPUT);
  pinMode(vermped1, OUTPUT);
  pinMode(verdped1, OUTPUT);
  pinMode(vermped2, OUTPUT);
  pinMode(verdped2, OUTPUT); 
}

void loop() {
 
   /* fechado para transito da rua 1, aberto para
   pedestre da rua 1, aberto para transito da
   rua 2, fechado para pedestre da rua 2. */
  
  digitalWrite(vermtran1, 1);
  digitalWrite(verdtran2, 1);
  digitalWrite(vermped2, 1);
  digitalWrite(verdped1, 1);
  digitalWrite(vermtran2, 0);
  digitalWrite(verdtran1, 0);
  digitalWrite(vermped1, 0);
  digitalWrite(verdped2, 0);
  digitalWrite(amartran1, 0);
  digitalWrite(amartran2, 0);
  delay(20000);
 
  // amarelo da rua 2, mãozinha de pedestre da rua 1.
 
  digitalWrite(amartran2, 1);
  digitalWrite(verdtran2, 0);
  digitalWrite(verdped1, 0);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
 
  /* aberto para transito da rua 1, fechado para
   pedestre da rua 1, fechado para transito da
   rua 2, aberto para pedestre da rua 2. */
  
  digitalWrite(vermtran1, 0);
  digitalWrite(verdtran2, 0);
  digitalWrite(vermped2, 0);
  digitalWrite(verdped1, 0);
  digitalWrite(vermtran2, 1);
  digitalWrite(verdtran1, 1);
  digitalWrite(vermped1, 1);
  digitalWrite(verdped2, 1);
  digitalWrite(amartran1, 0);
  digitalWrite(amartran2, 0);
  delay(20000);
 
  // amarelo da rua 1, mãozinha de pedestre da rua 2.
 
  digitalWrite(amartran1, 1);
  digitalWrite(verdtran1, 0);
  digitalWrite(verdped2, 0);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  
}

Não se assustem com o tamanho do código!
OBS.: Vocês podem mudar o tempo dos semáforos mudando os “delay’’ de “(20000)”, para qualquer outro tempo.

Para fazer o segundo projeto Semáforo mostrado no vídeo você precisará ter:
- 1 Arduino UNO ou Duemilanove (2009);
- 1 Protoboard;
- 4 LEDs vermelhos;
- 4 LEDs verdes;
- 2 LEDs amarelos;
- 1 buzzer;
- Fios para protoboards.

Você colocará os LEDs na protoboard e ligará os LEDs no Arduino dessa forma:
LED vermelho do transito da rua 1 na porta 2 (digital) do Arduino;
LED verde do transito da rua 1 na porta 3 (digital) do Arduino;
LED amarelo do transito da rua 1 na porta 4 (digital) do Arduino;
LED vermelho do transito da rua 2 na porta 5 (digital) do Arduino;
LED verde do transito da rua 2 na porta 6 (digital) do Arduino;
LED amarelo do transito da rua 2 na porta 7 (digital) do Arduino;
LED vermelho do pedestre da rua 1 na porta 8 (digital) do Arduino;
LED verde do pedestre da rua 1 na porta 9 (digital) do Arduino;
LED vermelho do pedestre da rua 2 na porta 10 (digital) do Arduino;
LED verde do pedestre da rua 2 na porta 11 (digital) do Arduino;
Buzzer na porta 12 (digital) do Arduino.
Não esquecendo de ligar os Catodos dos LEDs (negativo do LED; menor terminal do LED) e o negativo do buzzer no GND do Arduino.

O código é:
int vermtran1 =2;
int verdtran1 =3;
int amartran1 =4;
int vermtran2 =5;
int verdtran2 =6;
int amartran2 =7;
int vermped1 =8;
int verdped1 =9;
int vermped2 =10;
int verdped2 =11;
int buzzer =12;

void setup() {
 
  pinMode(vermtran1, OUTPUT);
  pinMode(verdtran1, OUTPUT);
  pinMode(amartran1, OUTPUT);
  pinMode(vermtran2, OUTPUT);
  pinMode(verdtran2, OUTPUT);
  pinMode(amartran2, OUTPUT);
  pinMode(vermped1, OUTPUT);
  pinMode(verdped1, OUTPUT);
  pinMode(vermped2, OUTPUT);
  pinMode(verdped2, OUTPUT);
  pinMode(buzzer, OUTPUT);
 
}

void loop() {
 
  /* fechado para transito da rua 1, aberto para
   pedestre da rua 1, aberto para transito da
   rua 2, fechado para pedestre da rua 2, sinal sonoro
   pelo transito da rua 2 aberto. */
 
  digitalWrite(vermtran1, 1);
  digitalWrite(verdtran2, 1);
  digitalWrite(vermped2, 1);
  digitalWrite(verdped1, 1);
  digitalWrite(vermtran2, 0);
  digitalWrite(verdtran1, 0);
  digitalWrite(vermped1, 0);
  digitalWrite(verdped2, 0);
  digitalWrite(amartran1, 0);
  digitalWrite(amartran2, 0);
  digitalWrite(buzzer, 1);
  delay(1000);
  digitalWrite(buzzer, 0);
  delay(1000);
  digitalWrite(buzzer, 1);
  delay(1000);
  digitalWrite(buzzer, 0);
  delay(20000);
 
  // amarelo da rua 2, mãozinha de pedestre da rua 1.
 
  digitalWrite(amartran2, 1);
  digitalWrite(verdtran2, 0);
  digitalWrite(verdped1, 0);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
 
  /* aberto para transito da rua 1, fechado para
   pedestre da rua 1, fechado para transito da
   rua 2, aberto para pedestre da rua 2, sinal sonoro
   pelo transito da rua 1 aberto. */
   
  digitalWrite(vermtran1, 0);
  digitalWrite(verdtran2, 0);
  digitalWrite(vermped2, 0);
  digitalWrite(verdped1, 0);
  digitalWrite(vermtran2, 1);
  digitalWrite(verdtran1, 1);
  digitalWrite(vermped1, 1);
  digitalWrite(verdped2, 1);
  digitalWrite(amartran1, 0);
  digitalWrite(amartran2, 0);
  digitalWrite(buzzer, 1);
  delay(1000);
  digitalWrite(buzzer, 0);
  delay(1000);
  digitalWrite(buzzer, 1);
  delay(1000);
  digitalWrite(buzzer, 0);
  delay(20000);
 
  // amarelo da rua 1, mãozinha de pedestre da rua 2.
 
  digitalWrite(amartran1, 1);
  digitalWrite(verdtran1, 0);
  digitalWrite(verdped2, 0);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  
}

Não se assustem com o tamanho do código!
OBS.: Vocês podem mudar o tempo dos semáforos mudando os “delay’’ de “(20000)”, para qualquer outro tempo, e também podem mudar o tempo do buzzer mudando os “delay’’ dos buzzers para qualquer outro tempo, e também podem mudar a quantidade de disparos do buzzer colocando mais vezes o buzzer para ligar e desligar.

Para fazer o terceiro projeto Semáforo mostrado no vídeo você precisará ter as mesmas coisas do segundo projeto e sua montagem é a mesma, porém, o código muda.
O código é:
int vermtran1 =2;
int verdtran1 =3;
int amartran1 =4;
int vermtran2 =5;
int verdtran2 =6;
int amartran2 =7;
int vermped1 =8;
int verdped1 =9;
int vermped2 =10;
int verdped2 =11;
int buzzer =12;

void setup() {
 
  pinMode(vermtran1, OUTPUT);
  pinMode(verdtran1, OUTPUT);
  pinMode(amartran1, OUTPUT);
  pinMode(vermtran2, OUTPUT);
  pinMode(verdtran2, OUTPUT);
  pinMode(amartran2, OUTPUT);
  pinMode(vermped1, OUTPUT);
  pinMode(verdped1, OUTPUT);
  pinMode(vermped2, OUTPUT);
  pinMode(verdped2, OUTPUT);
  pinMode(buzzer, OUTPUT);
 
}

void loop() {
 
  /* fechado para transito da rua 1, aberto para
   pedestre da rua 1, aberto para transito da
   rua 2, fechado para pedestre da rua 2, sinal sonoro
   pelo transito da rua 2 aberto. */
 
  digitalWrite(vermtran1, 1);
  digitalWrite(verdtran2, 1);
  digitalWrite(vermped2, 1);
  digitalWrite(verdped1, 1);
  digitalWrite(vermtran2, 0);
  digitalWrite(verdtran1, 0);
  digitalWrite(vermped1, 0);
  digitalWrite(verdped2, 0);
  digitalWrite(amartran1, 0);
  digitalWrite(amartran2, 0);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  delay(20000);
 
  // amarelo da rua 2, mãozinha de pedestre da rua 1.
 
  digitalWrite(amartran2, 1);
  digitalWrite(verdtran2, 0);
  digitalWrite(verdped1, 0);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
  digitalWrite(vermped1, 1);
  delay(1000);
  digitalWrite(vermped1, 0);
  delay(1000);
 
  /* aberto para transito da rua 1, fechado para
   pedestre da rua 1, fechado para transito da
   rua 2, aberto para pedestre da rua 2, sinal sonoro
   pelo transito da rua 1 aberto. */
   
  digitalWrite(vermtran1, 0);
  digitalWrite(verdtran2, 0);
  digitalWrite(vermped2, 0);
  digitalWrite(verdped1, 0);
  digitalWrite(vermtran2, 1);
  digitalWrite(verdtran1, 1);
  digitalWrite(vermped1, 1);
  digitalWrite(verdped2, 1);
  digitalWrite(amartran1, 0);
  digitalWrite(amartran2, 0);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  digitalWrite(buzzer, 1);
  delay(250);
  digitalWrite(buzzer, 0);
  delay(250);
  delay(20000);
 
  // amarelo da rua 1, mãozinha de pedestre da rua 2.
 
  digitalWrite(amartran1, 1);
  digitalWrite(verdtran1, 0);
  digitalWrite(verdped2, 0);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  digitalWrite(vermped2, 1);
  delay(1000);
  digitalWrite(vermped2, 0);
  delay(1000);
  
}

Não se assustem com o tamanho do código!
OBS.: Vocês podem mudar o tempo dos semáforos mudando os “delay’’ de “(20000)”, para qualquer outro tempo, e também podem mudar o tempo do buzzer mudando os “delay’’ dos buzzers para qualquer outro tempo, e também podem mudar a quantidade de disparos do buzzer colocando mais vezes o buzzer para ligar e desligar.
Boa sorte!
Não deixem de visitar o blog do Renato Aloi, lá você aprenderá mexer no Arduino, e terá as explicações de cada função e cada detalhe dos códigos. 

O blog é: renatoaloi.blogspot.com/ 
Qualquer dúvida, me passe um e-mail, meus e-mails são:
robertoerayllonn@hotmail.com 
rayllonn_9@hotmail.com
robertoflamengao@hotmail.com

Um Abraço!
Ass.: Rayllonn Nagime.

Um comentário:

  1. Bom dia, preciso do contato de vocês para saber se interessam um projeto na empresa que trabalho. Trabalho em uma industria que precisa ter um semafaro na entrada sinalizando quando um caminhão pode entrar para descarregar. O caminhão descarrega aproximadamente a 600 metros da entrada, pensei em ter um sensor (com arduino também) que detectaria a presença do caminhão, quando o caminhão saisse, o sinal na entrada ficaria verde, autorizando a entrada do proximo caminhão.

    O que acham? Qualquer coisa me passem um email: ti.suporte@sadabio.com.br

    Parabéns pelo Blog

    ResponderExcluir