Icono del sitio ELECTROALL

Como hacer un semaforo profesional

[icon_counter border_size=”2″ border_color=”#a4a4a4″ icon_type=”custom” icon_img=”id^569|url^https://www.electroallweb.com/wp-content/uploads/2019/11/jlcpcbc.png|caption^null|alt^null|title^jlcpcbc|description^null” img_width=”70″ block_title_front=”JLCPCB” front_heading_tag=”div” block_desc_front=”Fabricante de Tarjetas PCB’S Profesionales a tan solo $2″ block_title_back=”QUIERES TU PBC CON ACABO PROFESIONAL?” back_heading_tag=”span” block_desc_back=”Ordene ahora su diseño PCB a un precio de infarto, a tan solo $2″ custom_link=”1″ button_link=”url:https%3A%2F%2Fjlcpcb.com%2F||target:%20_blank|” button_text=”Order Now” button_bg=”#1e73be” button_txt=”#ffffff”]
[icon_counter border_size=”2″ border_color=”#a4a4a4″ icon_type=”custom” icon_img=”id^569|url^https://www.electroallweb.com/wp-content/uploads/2019/11/jlcpcbc.png|caption^null|alt^null|title^jlcpcbc|description^null” img_width=”70″ block_title_front=”JLCPCB” front_heading_tag=”div” block_desc_front=”Fabricante de Tarjetas PCB’S Profesionales a tan solo $2″ block_title_back=”QUIERES TU PBC CON ACABO PROFESIONAL?” back_heading_tag=”span” block_desc_back=”Ordene ahora su diseño PCB a un precio de infarto, a tan solo $2″ custom_link=”1″ button_link=”url:https%3A%2F%2Fjlcpcb.com%2F||target:%20_blank|” button_text=”Order Now” button_bg=”#1e73be” button_txt=”#ffffff”]
[icon_counter border_size=”2″ border_color=”#a4a4a4″ icon_type=”custom” icon_img=”id^568|url^https://www.electroallweb.com/wp-content/uploads/2019/11/WhatsApp-Image-2019-12-30-at-21.45.41.png|caption^null|alt^null|title^WhatsApp Image 2019-12-30 at 21.45.41|description^null” img_width=”70″ block_title_front=”LCSC ELECTRONICS” front_heading_tag=”span” block_desc_front=”Tienda Electrónica a Precios Extremadamente Bajos” block_title_back=”LA MEJOR TIENDA ONLINE” back_heading_tag=”span” block_desc_back=”Encuentre todo tipo de componentes electrónicos a precios extremadamente BAJOS.” custom_link=”1″ button_link=”url:https%3A%2F%2Flcsc.com%2F%3Ffrom_code%3DPL20191220BSDR||target:%20_blank|” button_text=”Buy Now” button_bg=”#1e73be” button_txt=”#ffffff”]
[icon_counter border_size=”2″ border_color=”#a4a4a4″ icon_type=”custom” icon_img=”id^568|url^https://www.electroallweb.com/wp-content/uploads/2019/11/WhatsApp-Image-2019-12-30-at-21.45.41.png|caption^null|alt^null|title^WhatsApp Image 2019-12-30 at 21.45.41|description^null” img_width=”70″ block_title_front=”LCSC ELECTRONICS” front_heading_tag=”span” block_desc_front=”Tienda Electrónica a Precios Extremadamente Bajos” block_title_back=”LA MEJOR TIENDA ONLINE” back_heading_tag=”span” block_desc_back=”Encuentre todo tipo de componentes electrónicos a precios extremadamente BAJOS.” custom_link=”1″ button_link=”url:https%3A%2F%2Flcsc.com%2F%3Ffrom_code%3DPL20191220BSDR||target:%20_blank|” button_text=”Buy Now” button_bg=”#1e73be” button_txt=”#ffffff”]

SÍGUENOS 

YouTube
YouTube
Instagram
Instagram
GitHub
GitHub
INTRODUCCIÓN

Estoy completamente seguro  que todos absolutamente todos  hemos visto un semáforo en las calles, y como electrónicos en algún momento hemos querido construir uno, déjenme contarles que crear todo un sistema de un semáforo era mi reto desde hace mucho tiempo; pues ahora ya lo tengo completamente funcional. En este video  les quiero enseñar paso a paso como se ha realizado este proyecto, pues veremos desde la construcción del esquemático electrónico, el diseño pcb, el desarrollo de la programación y finalmente veremos la practica en físico y, lo que más me encanta de este semáforo es que tendremos  contadores descendentes de 3 colores; verde, amarillo y rojo, asimismo, se contará con 3 luces señalizadores de colores verde, amarillo y rojo.

ESPECIFICACIONES TÉCNICAS
  1. Tensión de alimentación……………………….…………12VDC
  2. Corriente de alimentación………………….……………500mA
  3. Contador descendente 2 digitos………………………..99 -00
  4. Colores del contador……………………………………….Verde, amarillo, rojo
  5. Salidas para luces señalizadores……………………..6
  6. Colores luces señalizadores…………………………….(Verde, amarillo, rojo)x2
  7. Entorno de programación………………………..……..Arduino
  8. Condiciones ambientales min……………….…..….-10°
  9. Condiciones ambientales max……………………….60°
  10. Dimensiones………………………………………………….100x80mm
  11.  Empotrable………………………………………….………Sí
ESQUEMÁTICO ELECTRÓNICO
DISEÑO PCB:
Ordene ahora en JLCPCB
Tarjeta principal
Luces Semáforo
LISTA DE COMPONENTES ELECTRÓNICOS
Tarjeta principal
Luces Semáforo
PASOS PARA SUBIR UN PROGRAMA
PASO 1 : SUBIR GESTOR DE ARRANQUE (BOOTLOADER)

Para poder usar un microcontrolador nuevo (atmega328p-U), es necesario subir un un gestor de arranque como también llamado “BOOTLOADER”, esto nos facilitará subir programas en futuras ocasiones.

finalmente para quemar el bootloader se tendrá que realizar a través de los pines ICSP, que prácticamente serían los pines [ (MOSI=11) (MISO = PIN12) (SCK=PIN13) (Slave=PIN10) ]. Para subir y quemar el gestor de arranque necesitaremos un arduino UNO ó MEGA y realizar las siguientes conexiones (ARDUINO UNO – MAIN BOARD SEMÁFORO).

PASO 2 : SUBIR PROGRAMA; PC – BOARD MAIN SEMAFORO 

Después de haber subido el gestor de arranque finalmente ya podremos subir cualquier programa como normalmente lo realizamos a través del puerto serie.

CONEXIONES EXTERNAS
CÓDIGO
/* 
                CREADO POR      :{==[=======>>>> ELECTROALL <<<<<=======]==}
                INSTAGRAM       : https://www.instagram.com/carlos_j_fuentess/
                                  ó  @carlos_j_fuentess
                FACEBOOK        : https://web.facebook.com/ELECTROALL.ELECTRONICA/?_rdc=1&_rdr
                PÁGINA WEB      : https://www.electroallweb.com/
                YOUTUBE         : https://www.youtube.com/c/ELECTROALL
           ___________________________________________________________________
           *** {==[=======> (SEMÁFORO CON CONTADORES ) <=======]==}  ***
           ___________________________________________________________________
*/

//////////////////////////////////////////////////
int a =2;  ///////////////////////////////////////
int b =3;  ///////////////////////////////////////
int c =4;  ///////////////////////////////////////PINES PARA EL CONTADOR 
int d =5;  ///////////////////////////////////////DE UNIDADES
int e =6;  ///////////////////////////////////////
int f =7;  ///////////////////////////////////////
int g =8;  ///////////////////////////////////////

int A = 11;  ///////////////////////////////////////
int B = 12;  ///////////////////////////////////////
int C = 13;  ///////////////////////////////////////
int D = 14;  ///////////////////////////////////////PINES PARA EL CONTADOR 
int E = 15;  ///////////////////////////////////////DE DECENAS
int F = 16;  ///////////////////////////////////////
int G = 17;  ///////////////////////////////////////

int GR = 9;   // --VERDE-- //////////////////////////PINES CONTROL DE COLORES 
int RE = 10;  // --ROJO-- ///////////////////////////PARA EL CONTADOR

int SG = 18;  ///--VERDE-- //////////////////////////PINES PARA EL CONTROL DE LAS
int SR = 19;  //--ROJO- /////////////////////////////LUECES DEL SEMAFOR
/////////////////////////////////////////////////////

int uno     [7] = {a,b,c,d,e,f,g};// UNIDADES
int dos     [7] = {A,B,C,D,E,F,G};// DECENAS

//--UNIDADES--/////////////////////////////////////////
int unidad0 [7] = {1,1,1,1,1,1,0};//= #0
int unidad1 [7] = {0,1,1,0,0,0,0};//= #1
int unidad2 [7] = {1,1,0,1,1,0,1};//= #2
int unidad3 [7] = {1,1,1,1,0,0,1};//= #3
int unidad4 [7] = {0,1,1,0,0,1,1};//= #4
int unidad5 [7] = {1,0,1,1,0,1,1};//= #5
int unidad6 [7] = {1,0,1,1,1,1,1};//= #6
int unidad7 [7] = {1,1,1,0,0,0,0};//= #7
int unidad8 [7] = {1,1,1,1,1,1,1};//= #8
int unidad9 [7] = {1,1,1,1,0,1,1};//= #9

//--DECENAS--////////////////////////////////////////////
int decena0 [7] = {1,1,1,1,1,1,0};//= #0
int decena1 [7] = {0,1,1,0,0,0,0};//= #1
int decena2 [7] = {1,1,0,1,1,0,1};//= #2
int decena3 [7] = {1,1,1,1,0,0,1};//= #3
int decena4 [7] = {0,1,1,0,0,1,1};//= #4
int decena5 [7] = {1,0,1,1,0,1,1};//= #5
int decena6 [7] = {1,0,1,1,1,1,1};//= #6
int decena7 [7] = {1,1,1,0,0,0,0};//= #7
int decena8 [7] = {1,1,1,1,1,1,1};//= #8
int decena9 [7] = {1,1,1,1,0,1,1};//= #9

int counter=11; //CONTADOR UNIDADES
int valorD =3;  //CONTADOR DECENAS

int counter1=0; // CONTADOR PARA EL CAMBIO DE COLOR 
void setup() {

for(byte i =0; i<7;i++){
  pinMode (uno[i],OUTPUT);
  pinMode (dos[i],OUTPUT);
}
pinMode(GR,OUTPUT);
pinMode(RE,OUTPUT);
pinMode(SG,OUTPUT);
pinMode(SR,OUTPUT);

}

void loop() {

    delay(1000); // TIEMPO DE CAMBIO

//====================================CONTADOR VERDE DE 30 SEG===
//===============================================================
 if(counter1==0){

   if((valorD==0)&&(counter==0)){
    valorD=0;
    counter1++;
    counter=6;
  }
     if ((counter==0)||(counter==10)){
    valorD=valorD-1;
  }

      if (counter <=10){

   if (counter==0){
    counter=10;
   }

  }

  digitalWrite(GR, 1);
  digitalWrite(RE, 0); 

  digitalWrite(SG, 1);
  digitalWrite(SR, 0); 
     counter --;
 }

//====================================CONTADOR AMBAR DE 4 SEG====
//===============================================================
  if(counter1==1){
      if((valorD==0)&&(counter==0)){
    valorD=1;
    counter1++;
  }
      if (counter <=10){

   if (counter==0){
    counter=10;
   }

  }

    analogWrite(GR, 110);
    analogWrite(RE, 250); 
    digitalWrite(SG, 0);
    digitalWrite(SR, 0);
    counter --;
 }

//====================================CONTADOR ROJO 18 SEG=======
//===============================================================
   if(counter1==2){
       if((valorD==0)&&(counter==0)){
     valorD=3;
     counter1=0;
 } 
     if ((counter==0)||(counter==10)){
    valorD=valorD-1;
  }
      if (counter <=10){

   if (counter<=0){
    counter=10;
   }
      }
  digitalWrite(GR, 0);
  digitalWrite(RE, 1); 

  digitalWrite(SG, 0);
  digitalWrite(SR, 1);
 counter --;
   }

//==========================CONTADOR DE DIGITOS (UNIDADES)=======
//===============================================================
  switch(counter) {
  case 0:
  for(byte i=0;i<7;i++){
     digitalWrite (uno[i],unidad0[i]);
  }
  break;
    case 1:
  for(byte i=0;i<7;i++){
     digitalWrite (uno[i],unidad1[i]);
  }
  break;
    case 2:
  for(byte i=0;i<7;i++){
     digitalWrite (uno[i],unidad2[i]);
  }
  break;
    case 3:
  for(byte i=0;i<7;i++){
     digitalWrite (uno[i],unidad3[i]);
  }
  break;
    case 4:
  for(byte i=0;i<7;i++){
     digitalWrite (uno[i],unidad4[i]);
  }
  break;
    case 5:
  for(byte i=0;i<7;i++){
     digitalWrite (uno[i],unidad5[i]);
  }
  break;
    case 6:
  for(byte i=0;i<7;i++){
     digitalWrite (uno[i],unidad6[i]);
  }
  break;
    case 7:
  for(byte i=0;i<7;i++){
     digitalWrite (uno[i],unidad7[i]);
  }
  break;
    case 8:
  for(byte i=0;i<7;i++){
     digitalWrite (uno[i],unidad8[i]);
  }
  break;
      case 9:
  for(byte i=0;i<7;i++){
     digitalWrite (uno[i],unidad9[i]);
  }
  break;
  default:
    for(byte i=0;i<7;i++){
      digitalWrite (uno[i],unidad0[i]);
  }
  break; 
  }

//==========================CONTADOR DE DIGITOS (DECENAS)========
//===============================================================

  switch(valorD) {
    case 0:
  for(byte i=0;i<7;i++){
     digitalWrite (dos[i],decena0[i]);
  }
  break;
    case 1:
  for(byte i=0;i<7;i++){
      digitalWrite (dos[i],decena1[i]);
  }
  break;
    case 2:
  for(byte i=0;i<7;i++){
      digitalWrite (dos[i],decena2[i]);
  }
  break;
    case 3:
  for(byte i=0;i<7;i++){
     digitalWrite (dos[i],decena3[i]);
  }
  break;
    case 4:
  for(byte i=0;i<7;i++){
      digitalWrite (dos[i],decena4[i]);
  }
  break;
    case 5:
  for(byte i=0;i<7;i++){
      digitalWrite (dos[i],decena5[i]);
  }
  break;
    case 6:
  for(byte i=0;i<7;i++){
      digitalWrite (dos[i],decena6[i]);
  }
  break;
    case 7:
  for(byte i=0;i<7;i++){
      digitalWrite (dos[i],decena7[i]);
  }
  break;
    case 8:
  for(byte i=0;i<7;i++){
      digitalWrite (dos[i],decena8[i]);
  }
  break;
    case 9:
  for(byte i=0;i<7;i++){
      digitalWrite (dos[i],decena9[i]);
  }
  break; 
  default:
    for(byte i=0;i<7;i++){
      digitalWrite (dos[i],decena0[i]);
  }
  break; 

    }

}
VIDEO
Salir de la versión móvil