Registros de desplazamiento: Array of LED Mirroring

1

Estoy haciendo una actividad y necesito ayuda. Así que estoy practicando sobre los registros de cambio ... El objetivo que quiero lograr es iluminar uno por uno en secuencia todos los 16 leds.

Pero lo que sucede es que el segundo conjunto de 8 leds conectados al registro de segundo turno está copiando la secuencia del primer conjunto de 8 leds conectados al primer registro de turno.

En otras palabras, el resultado de los primeros 8 leds es también el resultado de los 2dos leds. Se está duplicando. ¿Por qué esto es tan? dado que conecté el QS 'del primer registro a la D del segundo registro de desplazamiento. Estoy confundido. Tal vez 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!

    
pregunta ROM BAN

1 respuesta

2

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

    
respondido por el Billy Kalfus

Lea otras preguntas en las etiquetas