1 votos

Registros de desplazamiento: Matriz de reflejo de LEDs

Estoy haciendo una actividad y necesito ayuda. Así que estoy practicando sobre los registros de cambio... El objetivo que quiero conseguir es que se enciendan uno a uno en secuencia los 16 leds.

Pero lo que ocurre es que el segundo conjunto de 8 leds conectado al 2º registro de desplazamiento está copiando la secuencia del primer conjunto de 8 leds conectado al 1º registro de desplazamiento.

En otras palabras, el resultado de los primeros 8 leds es también el resultado de los segundos 8 leds. Es un reflejo. ¿Por qué es así? dado que conecté el QS' del primer registro a la D del segundo registro de desplazamiento. Estoy confundido. ¿Quizás un error de Proteus?

De todos modos aquí está mi código

unsigned char sequence[] = {1, 2, 4, 8, 16, 32, 64, 128};
unsigned char sequence2[]= {128, 256, 512, 1024, 2048, 4096, 8192, 16384}; //added

int latchPin = 8;  //Pin connected to STR(pin 1) of HEF4094
int clockPin = 12; //Pin connected to CP(pin 3) of HEF4094
int dataPin = 11;  //Pin connected to D(pin 2) of HEF4094

void setup() {    

  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() 
{ 
  for (int i = 0; i < 16; i++)   
  { //added
        if(i<8){
           shiftOut(dataPin, clockPin, MSBFIRST, sequence[i]); //Send the data
           digitalWrite(latchPin, HIGH); //Pull latch HIGH to send data
         }
         else if (i>=8){
            shiftOut(dataPin, clockPin, MSBFIRST, sequence2[i]); //Send the data
          }
  }//added
}

y este mi circuito diseñado.

¡Cualquier ayuda será apreciada gracias!

enter image description here

2voto

k.stm Puntos 150

Según el Referencia de Arduino El shiftOut() cambia los datos un byte completo (8 bits) cada vez. En el for bucle en loop() , usted llama a shiftOut() 16 veces consecutivas con los mismos datos, por lo que se sincronizan 16 copias del mismo byte en sus registros de desplazamiento - por lo que las salidas de ambos registros de desplazamiento se reflejarán.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X