Menú principal

martes, 28 de junio de 2016

Semaforo con segundero - Arduino

/*PROGRAMA EN EL CUAL UN DISPLAY DE 7 SEGMENTOS
 CUENTA LOS SEGUNDOS CUANDO UN SEMAFORO ESTA EN VERDE
 Y EN ROJO*/

/*DISPLAY*/
int matriz[11][7]={
  {
    1,1,1,1,1,1,0          }//numero 0
  ,
  {
    0,1,1,0,0,0,0          }//1
  ,
  {
    1,1,0,1,1,0,1          }//2
  ,
  {
    1,1,1,1,0,0,1          }//3
  ,
  {
    0,1,1,0,0,1,1          }//4
  ,
  {
    1,0,1,1,0,1,1          }//5
  ,
  {
    1,0,1,1,1,1,1          }//6
  ,
  {
    1,1,1,0,0,0,0          }//7
  ,
  {
    1,1,1,1,1,1,1          }//8
  ,
  {
    1,1,1,1,0,1,1          }//9
};

/*SEMAFORO*/
int rojo=10;      //pin al que vamos a conectar el led rojo
int amarillo=11;  //pin al que vamos a conectar el led amarillo
int verde=12;     //pin al que vamos a conectar el led verde

void setup()
{
  /*---------------DISPLAY-----------------*/
  for(int i=2; i<9; i++)//desde entrada 2 a la 9 
  {
    pinMode(i, OUTPUT);//declarar como salida
  }
  /*---------------SEMAFORO-------------------*/
  pinMode(rojo,OUTPUT);   //declaramos pin rojo como salida
  pinMode(amarillo,OUTPUT);//declaramos el pin amarillo como salida
  pinMode(verde,OUTPUT);   //declaramos el pin verde como salida  
}

void loop() //bucle
{ 
  /*--------------SEMAFORO-------------------*/
  digitalWrite(rojo,HIGH); //encendemos el led rojo
  delay(0);  //esperamos 0 segundos

  /*----------DISPLAY-----*/
  for(int num=5; num>=0; num--)
  {
    for(int i=0; i<7; i++)
    {
      if(matriz[num][i]==1)
        digitalWrite(i+2, HIGH);
      else
        digitalWrite(i+2, LOW);
    }
    delay(1000);
  }
  /*------------------------*/
  digitalWrite(rojo,LOW);  //apagamos el led rojo
  delay(0);               //no hay espera

  /*--------------------SEMAFORO-----------------*/
  digitalWrite(verde,HIGH); //encendemos el led verde
  delay(0);             //esperamos 0 segundos
  /*----------DISPLAY------------*/
  for(int num=5; num>=0; num--)
  {
    for(int i=0; i<7; i++)
    {
      if(matriz[num][i]==1)
        digitalWrite(i+2, HIGH);
      else
        digitalWrite(i+2, LOW);
    }
    delay(1000);
  }
  /*-------------------------------*/
  digitalWrite(verde,LOW);  //apagamos el led verde
  delay(0); //no hay espera


  /*----------SEMAFORO--------------*/
  digitalWrite(amarillo,HIGH); //encendemos el led amarillo
  delay(1500);                 //esperamos segundo y medio
  digitalWrite(amarillo,LOW);  //apagamos el led amarillo
  delay(0);                  //esperamos medio segundo
}

Video de funcionamiento: video

No hay comentarios:

Publicar un comentario