Estoy tratando de construir un circuito que use tres 4094 para darme suficientes salidas para controlar varios LED. He construido algunos circuitos similares anteriormente en el pasado con el mismo código y esquema, pero por alguna razón, esta vez tengo problemas para controlar los registros de desplazamiento.
El primer 4094 se conecta a mi Arduino UNO mediante los siguientes resultados:
CD4094_CLOCK - Digital 2
CD4094_DATA - Digital 3
CD4094_STROBE - Digital 4
Por el bien de las pruebas, he conectado los 4094 OE a + 5V, pero en realidad estarán en un pin de PWM. He conectado todas las entradas de 4094 STROBE
y CLOCK
como lo he hecho anteriormente, también.
Estoy usando el siguiente programa, sin embargo, sin importar el valor, I shiftOut
a 4094, la mayoría de las salidas se mantienen altas:
// CD4094 Constants
#define CD4094_CLOCK 2
#define CD4094_DATA 3
#define CD4094_STROBE 4
//#define CD4094_OE 3
char Display1 = 0, Display2 = 0, Display3 = 0;
void setup() {
pinMode(CD4094_CLOCK, OUTPUT);
pinMode(CD4094_STROBE, OUTPUT);
pinMode(CD4094_DATA, OUTPUT);
//pinMode(CD4094_OE, OUTPUT);
}
void loop() {
Display1 = 63;
Display2 = 6;
Display3 = 91;
shiftOut(CD4094_DATA, CD4094_CLOCK, MSBFIRST, Display3);
shiftOut(CD4094_DATA, CD4094_CLOCK, MSBFIRST, Display2);
shiftOut(CD4094_DATA, CD4094_CLOCK, MSBFIRST, Display1);
digitalWrite(CD4094_STROBE, HIGH);
digitalWrite(CD4094_STROBE, LOW);
delay(3000);
Display1 = 0;
Display2 = 0;
Display3 = 0;
shiftOut(CD4094_DATA, CD4094_CLOCK, MSBFIRST, Display3);
shiftOut(CD4094_DATA, CD4094_CLOCK, MSBFIRST, Display2);
shiftOut(CD4094_DATA, CD4094_CLOCK, MSBFIRST, Display1);
digitalWrite(CD4094_STROBE, HIGH);
digitalWrite(CD4094_STROBE, LOW);
delay(3000);
}
Aquí también hay una foto de mi tablero, en caso de que pueda ayudar a alguien.
¿Alguien tiene alguna sugerencia sobre cómo puedo solucionar este tipo de problemas? Las únicas herramientas que tengo son mi multímetro y los tableros Arduino. ¿Hay algún tipo de problema con mi código?