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! 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);
}
}