Pages: [1]   Go Down
Author Topic: Reloj Digital Programable.  (Read 1611 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola amigos. Estoy realizando un reloj programable con 6 display 7 segmentos. El problema con el multiplexeo es que los displays parpadean. Ademas de eso quiero anexarle unos pulsadores para programar cada Hora-Minuto-Segundo. Agradezco su ayuda ..

PD: No se como detener el display de las horas (El del pin 3 de tal manera que el reloj llegue hasta 12 am o pm y salte a 1 am o pm de nuevo)

Gracias! smiley-razz Anexo codigo:



int contador1=0; // Contadores para Aumentar el tiempo
int contador2=0;
int contador3=0;
int contador4=0;
int contador5=0;
int contador6=0;

int retener=0;// Retiene cada digito el tiempo (segundo, minuto, hora)
int segundo=5;//TIEMPO DE MULTIPLEXEO
int minuto=4;//
int hora=3;//


void setup() {  
  pinMode(2,OUTPUT);// Display horas
  pinMode(3,OUTPUT); // Display horas
  pinMode(4, OUTPUT);  // Display minutos
  pinMode(5, OUTPUT);// Display minutos
  pinMode(6, OUTPUT);// Display segundos
  pinMode (7, OUTPUT);//Display segundos
  pinMode(8, OUTPUT);// BCD
  pinMode(9, OUTPUT);// BCD
  pinMode(10,OUTPUT);// BCD
  pinMode(11,OUTPUT);// BCD
  }
void loop(){
  // Ciclos Para que empieze a pasar el tiempo
  for (int contador5=0;contador5<2;contador5++){
   for(int contador6=0;contador6<10;contador6++){
    for(int contador1=0;contador1<7; contador1++){  
      for(int contador2=0; contador2<10; contador2++){
        for(int contador3=0;contador3<6; contador3++){
           for (int contador4=0;contador4<10; contador4++){
             for (int retener=0;retener<1;retener++){
// Encendiendo los displays
   digitalWrite(3,HIGH);
   display6(contador6);
   digitalWrite(3,LOW);   
   digitalWrite(2,HIGH);
   display5(contador5);
   digitalWrite(2,LOW);  
   digitalWrite(5,HIGH);
   display2(contador2);
   digitalWrite(5,LOW);
   digitalWrite(4,HIGH);
   display1(contador1);
   digitalWrite(4,LOW);
   digitalWrite(7,HIGH);
   display4(contador4);
   digitalWrite(7,LOW);
   digitalWrite(6,HIGH);
   display3(contador3);
   digitalWrite(6,LOW);
}
}          
}
}
}
}
}
}
void display6(int contador6){
 if(contador6==0)
 {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(hora);
   }
      if(contador6==1)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(hora);
   }
      if(contador6==2)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,HIGH);
     digitalWrite(11,LOW);
     delay(hora);
   }
      if(contador6==3)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,HIGH);
     digitalWrite(11,HIGH);
     delay(hora);
   }
      if(contador6==4)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(hora);
   }
      if(contador6==5)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(hora);
   }
      if(contador6==6)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,HIGH);
     digitalWrite(11,LOW);
     delay(hora);
   }
      if(contador6==7)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,HIGH);
     digitalWrite(11,HIGH);
     delay(hora);
   }
      if(contador6==8)
   {
     digitalWrite(8,HIGH);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(hora);
   }
      if(contador6==9)
   {
     digitalWrite(8,HIGH);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(hora);
   }
}
void display5(int contador5){
     if(contador5==0)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(hora);
   }
      if(contador5==1)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(hora);
   }
}



* Proteus reloj.png (141.31 KB, 1312x768 - viewed 107 times.)

* Proteus reloj.png (141.31 KB, 1312x768 - viewed 48 times.)

* Proteus reloj.png (141.31 KB, 1312x768 - viewed 41 times.)
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Continuacion de codigo:

void display2(int contador2){
     if(contador2==0)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(minuto);
   }
      if(contador2==1)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(minuto);
   }
      if(contador2==2)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,HIGH);
     digitalWrite(11,LOW);
     delay(minuto);
   }
      if(contador2==3)
   {
     digitalWrite(9,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,HIGH);
     digitalWrite(11,HIGH);
     delay(minuto);
   }
      if(contador2==4)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(minuto);
   }
      if(contador2==5)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(minuto);
   }
      if(contador2==6)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,HIGH);
     digitalWrite(11,LOW);
     delay(minuto);
   }
      if(contador2==7)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,HIGH);
     digitalWrite(11,HIGH);
     delay(minuto);
   }
      if(contador2==8)
   {
     digitalWrite(8,HIGH);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(minuto);
   }
      if(contador2==9)
   {
     digitalWrite(14,HIGH);
     digitalWrite(15,LOW);
     digitalWrite(16,LOW);
     digitalWrite(17,HIGH);
    delay(minuto);
   }
}
void display1(int contador1){
     if(contador1==0)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(minuto);
   }
      if(contador1==1)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(minuto);
   }
      if(contador1==2)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,HIGH);
     digitalWrite(11,LOW);
      delay(minuto);
   }
      if(contador1==3)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,HIGH);
     digitalWrite(11,HIGH);
     delay(minuto);
   }
      if(contador1==4)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(minuto);
   }
      if(contador1==5)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(minuto);
   }
      if(contador1==6)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,HIGH);
     digitalWrite(11,LOW);
    delay(minuto);
   }
      if(contador1==7)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,HIGH);
     digitalWrite(11,HIGH);
    delay(minuto);
   }
      if(contador1==8)
   {
     digitalWrite(8,HIGH);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(minuto);
   }
      if(contador1==9)
   {
     digitalWrite(8,HIGH);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(minuto);
   }
}


void display4(int contador4){
     if(contador4==0)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(segundo);
   }
      if(contador4==1)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(segundo);
   }
      if(contador4==2)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,HIGH);
     digitalWrite(11,LOW);
     delay(segundo);
   }
      if(contador4==3)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,HIGH);
     digitalWrite(11,HIGH);
     delay(segundo);
   }
      if(contador4==4)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(segundo);
   }
      if(contador4==5)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(segundo);
   }
      if(contador4==6)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,HIGH);
     digitalWrite(11,LOW);
     delay(segundo);
   }
      if(contador4==7)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,HIGH);
     digitalWrite(11,HIGH);
     delay(segundo);
   }
      if(contador4==8)
   {
     digitalWrite(8,HIGH);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(segundo);
   }
      if(contador4==9)
   {
     digitalWrite(8,HIGH);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(segundo);
   }
}

void display3(int contador3){
     if(contador3==0)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(segundo);
   }
      if(contador3==1)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(segundo);
   }
      if(contador3==2)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,HIGH);
     digitalWrite(11,LOW);
     delay(segundo);
   }
      if(contador3==3)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,LOW);
     digitalWrite(10,HIGH);
     digitalWrite(11,HIGH);
     delay(segundo);
   }
      if(contador3==4)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,LOW);
     digitalWrite(11,LOW);
     delay(segundo);
   }
      if(contador3==5)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,LOW);
     digitalWrite(11,HIGH);
     delay(segundo);
   }
      if(contador3==6)
   {
     digitalWrite(8,LOW);
     digitalWrite(9,HIGH);
     digitalWrite(10,HIGH);
     digitalWrite(11,LOW);
      delay(segundo);
   } 
}


Logged

Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 958
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es que esa programacion es un "churro" del 20  smiley-sad-blue

Debias de aprender a crear "defines" y "matrices" por un lado y el empleo de bucles "for" y evitar la redundancia.

Por otro lado, estas multiplexando, no puedes emplear delays...

Por otro lado mas tienes un conversor bcd a 7 segmentos, emplea el latch

Por cierto, para poner codigo en el foro emplea el boton que pone "insert Code" cuando escribes el post.
Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Offline Offline
Sr. Member
****
Karma: 9
Posts: 252
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Como consejo, aunque no soy experto ni mucho menos, pero mi consejo sería que uses unos ShiftRegister, con 1 por cada display de 7 Segmentos, no sólo optimizarás el código, sino que será mucho más rápido y no tendrás necesidad de liarte con la "multiplexión"
Logged

My 3x3x3 Led Cube

[url=http://arduino.cc/forum/index.php/topic,1642

Pages: [1]   Go Up
Jump to: