Heladería de Albert
Albert, Bob, Charlene y Daisy están alineados en orden alfabético.
Albert está en el papel de la CPU, recogiendo el helado.
Primero, saca el helado de pasas de dátiles y se lo da a Bob, ¡aunque Bob odia las pasas!
Luego, Albert saca el helado de chocolate y se lo da a Bob.
Finalmente, Albert saca un flotador de vaca marrón y también se lo entrega a Bob.
Bob, Charlene y Daisy están en el papel de la cola de la cadena de margaritas 595.
Funciona como una cinta transportadora.
Si todo funciona bien,
Daisy recibe la fecha de helado de pasas,
Charlene obtiene el helado de chocolate, y
Bob consigue el flotador de vaca marrón.
Ocasionalmente, la CPU controla una transición positiva en el "pin de enganche", también llamado "pin de reloj de registro de almacenamiento", en el pin 12 del '595.
Esto es como Albert gritando: "Todo listo. ¡Disfruta el helado frente a ti!"
Entonces todos están felices.
(Incluso Bob, que odia las pasas, está feliz).
hardware
Parece que su hardware está bien: la salida MOSI de la CPU (en su caso, el pin 2 de Arduino) está conectada a la entrada MOSI del primer pin 14 de 595; y la salida MISO en cadena del primer '595 pin 9 está conectada a la entrada MOSI del segundo' 595 pin 14.
software
Estoy bastante seguro de que estamos viendo un error de programación menor o un error conceptual menor: ¿por qué algunas personas piensan que "255" es algo especial?
Parece que el software está enviando 8 bits al primer chip '595 bien.
Cada vez que envía un byte al primer '595 con shiftRegister.send (), cualquiera que sea la información que se encuentre en ese momento, el primer' 595 se elimina y entra en el segundo '595. Así es como registros de desplazamiento en cadena de margaritas Se supone que funciona. El segundo '595 en la cadena está siempre activo
A menudo tenemos una larga cadena de '595 chips, y solo queremos actualizar el valor en el primero de la cadena.
La única manera de hacer eso con la configuración normal de la cadena de margaritas es que el programa en la CPU recuerde cada valor en cada chip '595 y reenvíe todos los valores.
El johnny-five shift-register program probablemente deba hacer algo como :
var first_595 = 24;
var second_595 = 10;
var third_595 = 5;
// ...
// Always send all three values, in this order:
shiftRegister.send(third_595);
shiftRegister.send(second_595);
shiftRegister.send(first_595);
Algunas personas encuentran un poco al revés que el valor first que saca la CPU es el valor del chip last '595 en la cadena;
y el valor último que expulsa la CPU es el valor del primero 'chip 595 conectado directamente a la CPU.
¿Qué puedo decir? Así es como funciona la heladería de Albert.