Acabo de intentar por primera vez obtener un registro de desplazamiento para trabajar con mi Arduino... fue casi impecable, pero parece que me falta mi primer bit.
Seguí la guía aquí, pero usando solo un registro de desplazamiento: http://arduino.cc/en/Tutorial/ShiftOut
Me tomó un poco de tiempo darme cuenta, pero parece que el pin Q1 en mi registro de desplazamiento se ilumina cuando envío el número 2, Q2 es alto para 4, Q3 = 8, etc. cuando llamo shiftout() con el número 1 no se enciende ningún LED.
Revisé mi cableado y parece estar bien... luego verifiqué dos veces y definitivamente está bien.
Las únicas cosas en las que puedo pensar son: 1. Mi registro de desplazamiento es ligeramente diferente al que están usando... es un 595N, no un 595. 2. Hice algo mal en el código...
En bucle():
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 1);
digitalWrite(latchPin, HIGH);
¿Alguien tiene algún consejo para depurar este problema?
Saludos, Juan
El registro de desplazamiento se está comportando exactamente como se diseñó.
El segundo bit significativo desde el más bajo debe encenderse para un valor de 2. Eso es Q1.
Para verificar un valor de "1", debe buscar el bit de salida menos significativo, que es Q0.
Además, el 595 y el 595N no son funcionalmente diferentes.
No soy bueno con el código, pero ¿tal vez está tratando de bloquear los datos en la salida antes de que se registren correctamente en el registro de desplazamiento interno? Esto podría resultar en que el bit de datos registrado previamente en el registro de desplazamiento aparezca en la salida. Esto podría darte lo que ves. Tal vez necesite un pequeño retraso después del comando shiftOut. ¿O tal vez estoy siendo estúpido?
Juan caza
chris stratton
Juan caza