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!