terça-feira, 13 de novembro de 2012

Montagem de semáforo com arduino

02/12/2012 - Projeto - Semáforo para ser apresentado na exposição na EE Elza Facca Martins Bonilha
Projeto de semáforo que, durante o dia, funciona com led´s alterando as cores por 3 segundos, à noite, sem luminosidade, amarelo piscante e com um botão que, quando acionado, informa o motorista (amarelo e verde - alerta) e depois fecha o semáforo por 10 segundos.
Material
3 resistores de 220 ohm - Led´s
Led´s - Verde, amarelo e vermelho
2 resistores de 10k ohm
1 botão (push bottom)
1 LDR 

Imagem do esquema em protoboard do projeto

Programa no Arduino
/* Semáforo acionado por luz: Este semáforo aciona quando há luz, quando desligado o sinal fica amarelo piscante e quando o botão é pressionado o sinal avisa ao motorista,
acionando o amarelo e verde e depois no vermelho por mais tempo. Depois retorna a sequência normal
*/
void setup (){
  pinMode (A0, INPUT);
  pinMode (A1, INPUT);
  pinMode (8, OUTPUT);
  pinMode (7, OUTPUT);
  pinMode (4, OUTPUT);
  Serial.begin (9600);
}
  
 void loop (){
   float LDR; //variável que armazena o valor
   LDR=analogRead (A0)*0.0049; //leitura do LDR
   //leitura de botão
   float botao;
   botao=analogRead (A1)*0.0049;
  Serial.println ("LDR:/t"); 
  Serial.print (LDR/t);
  Serial.print ("/t Botão:/t");
  Serial.print (botao);
   
   if (LDR<3){  //se o ldr identificar que há luz então ativa o ciclo de funcionamento 
  //aciona os led´s por 3 segundos
 digitalWrite (8, HIGH);
 delay (3000); 
 digitalWrite (8, LOW);
 digitalWrite (7, HIGH);
 delay (3000); 
 digitalWrite (7, LOW);
 digitalWrite (4, HIGH);
 delay (3000); 
 digitalWrite (4, LOW);
  }
  if (LDR>3){  //se o ldr identificar que há luz então ativa o ciclo de funcionamento 
 //aciona os led amarelo por 1 segundo
 digitalWrite (7, HIGH);
 delay (1000); 
 digitalWrite (7, LOW);
 delay (1000);
 } 

 if (botao<3){  //se o botão estiver ativo aciona o led amarelo e verde e depois vermelho por 5 segundos  
 digitalWrite (8, HIGH);
 digitalWrite (7, HIGH);
 delay (3000); 
 digitalWrite (8, LOW);
 digitalWrite (7, LOW);
 digitalWrite (4, HIGH);
 delay (5000); 
 digitalWrite (4, LOW);
 }

}

Vídeo do teste do semáforo feito no Simulino. Tudo funcionou a contento e este projeto será apresentado na EE Elza Facca Martins Bonilha no interclasses de 10 a 13/12.



Dia 21 de Novembro de 2012,
Fizemos um novo semáforo, desta vez inteligente tendo um interruptor e sequencia correta.

 /*
Semáforo de LEDs inteligente, com interruptor para pedestre
*/

void setup() {    
Serial.begin (9600);
pinMode(A0,INPUT);
  pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(8,OUTPUT);
}
void loop (){
  int botao;
  botao=analogRead(A0);
  Serial.println (botao);
    if(botao>900){
      digitalWrite(8,LOW);
digitalWrite(13, HIGH);
  delay(1000);    
  digitalWrite(13, LOW);
    digitalWrite(12, HIGH);
  delay(500);
digitalWrite(12, LOW) ;
  digitalWrite(8, HIGH);  
  delay(1000);
digitalWrite(8, LOW);

  }
  if(botao<10){
  digitalWrite(13, LOW);
  digitalWrite(12, LOW);  
  digitalWrite(8, HIGH);
  delay(5000);
  }
}

//                                                                                                                                 //  
 Hoje dia 7 de novembro de  2012, fizemos um semáforo com 3 LEDs (Vermelho,Amarelo e Azul)
utilizando o Arduíno. (Aqui vai a programação para vocês)

  /*
  SEMÁFORO de LEDs
 */
void setup() {              
  // initialize the digital pin as an output.
  pinMode(12, OUTPUT);
    pinMode(13, OUTPUT);
pinMode(11, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(11, HIGH);   // liga o LED
  delay(1000);               // tempo do LED ligado
  digitalWrite(11, LOW);    // Desliga o LED
             

 digitalWrite(12, HIGH);   // turn the LED on (HIGH is the voltage level)
 delay(500);               // wait for a second
digitalWrite(12, LOW);    // turn the LED off by making the voltage LOW
             

 digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
 delay(1000);               // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW

      digitalWrite(12, HIGH);   // turn the LED on (HIGH is the voltage level)
 delay(500);               // wait for a second
digitalWrite(12, LOW);    // turn the LED off by making the voltage LOW
}


Nenhum comentário:

Postar um comentário