miércoles, 27 de marzo de 2019

Pràctica 4: SEMÀFOR

En aquesta pràctica aprendrem a fer un semàfor amb Arduino de dues maneres. En farem un que sigui de vianants i cotxes que inclogui un comptador i un brunzidor.
Podeu trobar més informació a https://bricoarduino.wordpress.com/2013/02/22/sketch_002-semaforo-led/ 
-Instal·lació de la pràctica:

  1. Hem de muntar el circuit amb 5 LEDS(2 vermells, 2 verds i 1 groc) connectats per una banda a terra (GND) i per l'altra a una resistència de 330 ohms.
  2. De la resistència ha de sortir un cable que vagi als diferents ports de sortida de la placa d'arduino(0,1,2,3,4).
  3. A continuació procedirem a muntar el display (el comptador).
  4. Necessitam 7 resistències de 330 ohms, una a cada cama deixant de banda la darrera i les del mig.
  5. Connectam 2 cables de GND a les cames del mig del display.
  6. De cada resistència ha de sortir un cable connectat als ports de sortida que queden lliures(5,6,7,8,9,10,11).
  7. Per instal·lar el brunzidor cal una resistència de 100 ohms.
  8. D'una pota s'ha de connectar el cable a terra (GND) i de l'altra la resistència.
  9. De la resistència es col·loca un cable al port de sortida 12.
*NOTA: per facilitar la instal·lació podem connectar tots els cables que van a GND en una mateixa fila de la placa protoboard per així dur un sol cable a GND.
Semàfor amb display
Brunzidor





-Codi:
int redLed1=0;
int yellowLed=1;
int greenLed1=2;
int redLed2=3;
int greenLed2=4;
int seg_A=5;
int seg_B=6;
int seg_C=7;
int seg_D=8;
int seg_E=9;
int seg_G=10;
int seg_F=11;
#define BRUNZIDOR 12
#define NOTA_E6 1319
int state=0;

void setup(){
 pinMode(redLed1, OUTPUT);
 pinMode(yellowLed, OUTPUT);
 pinMode(greenLed1, OUTPUT);
 pinMode(redLed2, OUTPUT);
 pinMode(greenLed2, OUTPUT);
 pinMode(seg_A, OUTPUT);
 pinMode(seg_B, OUTPUT);
 pinMode(seg_C, OUTPUT);
 pinMode(seg_D, OUTPUT);
 pinMode(seg_E, OUTPUT);
 pinMode(seg_F, OUTPUT);
 pinMode(seg_G, OUTPUT);
}


void loop(){
 
 digitalWrite(greenLed1, HIGH);
 digitalWrite(redLed2, HIGH);
 
 delay(5000);

 digitalWrite(greenLed1, LOW);
 digitalWrite(yellowLed, HIGH);
 delay(2000);

 digitalWrite(yellowLed, LOW);
 digitalWrite(redLed1, HIGH);
 digitalWrite(redLed2, LOW);
 digitalWrite(greenLed2, HIGH);



  for(int a=0;a<7;a++){
    if(a==0){
      digitalWrite(seg_A, HIGH); //nº5
      digitalWrite(seg_B, LOW);
      digitalWrite(seg_C, HIGH);
      digitalWrite(seg_D, HIGH);
      digitalWrite(seg_E, LOW);
      digitalWrite(seg_F, HIGH);
      digitalWrite(seg_G, HIGH);
      delay(1000);
      tone (BRUNZIDOR, NOTA_E6, 500);
      delay (500);
      }
   
      if(a==1){
      digitalWrite(seg_A, LOW); //nº4
      digitalWrite(seg_B, HIGH);
      digitalWrite(seg_C, HIGH);
      digitalWrite(seg_D, LOW);
      digitalWrite(seg_E, LOW);
      digitalWrite(seg_F, HIGH);
      digitalWrite(seg_G, HIGH);
      delay(1000);
      tone (BRUNZIDOR, NOTA_E6, 500);
      delay (500);
   
         }
      if(a==2){
      digitalWrite(seg_A, HIGH); //nº3
      digitalWrite(seg_B, HIGH);
      digitalWrite(seg_C, HIGH);
      digitalWrite(seg_D, HIGH);
      digitalWrite(seg_E, LOW);
      digitalWrite(seg_F, LOW);
      digitalWrite(seg_G, HIGH);
      delay(1000);
      tone (ZUMBADOR, NOTA_E6, 500);
      delay (500);
      }
         //nº2
     else if(a==4){
      digitalWrite(seg_A, HIGH);
      digitalWrite(seg_B, HIGH);
      digitalWrite(seg_C, LOW);
      digitalWrite(seg_D, HIGH);
      digitalWrite(seg_E, HIGH);
      digitalWrite(seg_F, LOW);
      digitalWrite(seg_G, HIGH);
      delay(1000);
      tone (BRUNZIDOR, NOTA_E6, 500);
      delay (500);
     }
     //nº1
    else if(a==5){
      digitalWrite(seg_A, LOW);
      digitalWrite(seg_B, HIGH);
      digitalWrite(seg_C, HIGH);
      digitalWrite(seg_D, LOW);
      digitalWrite(seg_E, LOW);
      digitalWrite(seg_F, LOW);
      digitalWrite(seg_G, LOW);
      delay(1000);
      tone (BRUNZIDOR, NOTA_E6, 500);
      delay (500);
        }
        //nº0
     else if(a==6){
      digitalWrite(seg_A, HIGH);
      digitalWrite(seg_B, HIGH);
      digitalWrite(seg_C, HIGH);
      digitalWrite(seg_D, HIGH);
      digitalWrite(seg_E, HIGH);
      digitalWrite(seg_F, HIGH);
      digitalWrite(seg_G, LOW);
      delay(1000);
      tone (BRUNZIDOR, NOTA_E6, 500);
      delay (500);}

       digitalWrite(seg_A, LOW);
      digitalWrite(seg_B, LOW);
      digitalWrite(seg_C, LOW);
      digitalWrite(seg_D, LOW);
      digitalWrite(seg_E, LOW);
      digitalWrite(seg_F, LOW);
      digitalWrite(seg_G, LOW);
     

   }
    digitalWrite(redLed1, LOW);
 digitalWrite(greenLed2, LOW);
 
}

Aquí teniu el resultat de la pràctica. Això es podria aplicar fàcilment als carrers d'una gran ciutat per controlar el flux de vianants i cotxes.


No hay comentarios:

Publicar un comentario