INTRODUCCIÓN:
Soy un estudiante en el programa de Ingeniería Electrónica en mi Universidad. Estoy construyendo un reloj digital como una iniciativa propia para aprender más. Algunos de los requisitos y pasos que son necesarios para este proyecto son temas que están por encima de mi nivel en comparación con el de mi programa. Sin embargo, estoy realmente comprometido con este proyecto y me gustaría saber más sobre cómo puedo mejorar los problemas que he tenido.
DETALLES / PROYECTO:
Estoy usando un microcontrolador Arduino (MODELO: UNO). Construí un programa simple para enviar un byte de información a un (TTL) 595 IC shift-register. Cada dígito binario se transfiere luego cada una de las 8 salidas en el 595 IC a su pin correspondiente fuera del LED.
PROBLEMA:
He notado que debido a que estoy usando (4) 595 IC para controlar un LED de 4 dígitos, estoy experimentando un retraso. Por lo tanto, mi precisión se ha ido. Podría acortar mi código para limitar el número de veces que uso la función "retraso ()" en mi código, pero todavía tendría el mismo problema.
SOLUCIÓN:
Me han dicho que use un reloj (555 IC). No sé nada de este IC. ¿Hay alguien que haya tenido algo de experiencia con el 555 IC que podría orientarme cuando comienzo a implementar esto en mi proyecto? ¿Necesitaré un microcontrolador Arduino si uso esto o no? ¿Hay alguna otra sugerencia sobre cómo puedo solucionar el problema que dije?
Adjunto una imagen de mi diseño si ayuda. Había eliminado 3 de los 595 IC cuando se tomó esta foto, pero la imagen muestra claramente mi microcontrolador, 595 registor de cambios y pantalla LED de 4 dígitos. También voy a adjuntar mi código que he hecho. Es muy genérico ya que soy un principiante, así que si hay algo evidente en mi código que está mal, tómatelo con calma. Sin embargo, por todos los medios, hágame saber qué estoy haciendo mal y podría hacerlo mejor.
int clockpin = 11; //595 pin 11
int latchpin = 12; //595 pin 12
int datapin = 13; //595 pin 14
int binary = 0;
void setup()
{
pinMode(latchpin, OUTPUT);
pinMode(clockpin, OUTPUT);
pinMode(datapin, OUTPUT);
}
void loop()
{
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 63);
digitalWrite(latchpin, HIGH);
delay(1000);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 6);
digitalWrite(latchpin, HIGH);
delay(1000);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 91);
digitalWrite(latchpin, HIGH);
delay(1000);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 79);
digitalWrite(latchpin, HIGH);
delay(1000);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 102);
digitalWrite(latchpin, HIGH);
delay(1000);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 109);
digitalWrite(latchpin, HIGH);
delay(1000);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 125);
digitalWrite(latchpin, HIGH);
delay(1000);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 7);
digitalWrite(latchpin, HIGH);
delay(1000);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 127);
digitalWrite(latchpin, HIGH);
delay(1000);
digitalWrite(latchpin, LOW);
shiftOut(datapin, clockpin, MSBFIRST, 111);
digitalWrite(latchpin, HIGH);
delay(1000);
}