CD4094BE Problemas con Arduino

1

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?

    
pregunta edcs

2 respuestas

2

La señal estroboscópica se configura como salida pero nunca se inicializa como alta. El código que proporcionó solo lo mueve alto por un momento y luego lo mantiene bajo durante la transmisión. Si entiendo la hoja de datos correctamente, la luz estroboscópica debe mantenerse alta durante la transmisión de datos

    
respondido por el Dejvid_no1
0
// CD4094 Constants
#define CD4094_CLOCK    18
#define CD4094_DATA     19
#define CD4094_STROBE   17
#define CD4094_OE     16

char Display1 = 1, Display2 = 2, Display3 = 3;

void setup() {
    pinMode(CD4094_CLOCK, OUTPUT);
    pinMode(CD4094_STROBE, OUTPUT);
    pinMode(CD4094_DATA, OUTPUT);
    //pinMode(CD4094_OE, OUTPUT);
}

void loop() {
    Display1 = 63, 6, 91, 79, 102, 109, 125, 7, 127, 111;
    Display2 = 63, 6, 91, 79, 102, 109, 125, 7, 127, 111;
    Display3 = 63, 6, 91, 79, 102, 109, 125, 7, 127, 111;

    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(30);
}
    
respondido por el اسامه

Lea otras preguntas en las etiquetas