SÍGUENOS
SÍGUENOS
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.
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).

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.



/*
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;
}
}
1 comentario. Dejar nuevo
Alguna consulta o sugerencia?