Actualmente estoy intentando aprender cómo funciona el multi shifting y por ello he empezado un proyecto en el que quiero manejar 2X 8x8 LED matrix con un Arduino. He encontrado que debo trabajar con el chip 74HC595.
Este es el esquema que estoy usando para probar cómo funciona el chip.
Pero cuando uso esto con el siguiente código, no se encienden todos los LEDs y algunos son menos brillantes que el resto.
#define DATA 10
#define CLOCK 11
#define LATCH 12
void latch();
uint8_t pic[] = {250,250,250,250,250,250,250,250};
void setup() {
pinMode(DATA, OUTPUT);
pinMode(CLOCK, OUTPUT);
pinMode(LATCH, OUTPUT);
}
void loop() {
for (int i=0; i<8; i++) {
shiftOut(DATA, CLOCK, LSBFIRST, ~pic[i]);
shiftOut(DATA, CLOCK, LSBFIRST, 128 >> i);
latch();
//delay(100);
}
}
void latch() {
digitalWrite(LATCH, HIGH);
delayMicroseconds(10);
digitalWrite(LATCH, LOW);
delayMicroseconds(10);
}
¿Qué puede causar eso? ¿Tengo un mal cableado o un mal código?
ACTUALIZACIÓN
He probado mi matriz de LEDs con el código de @vicatcu. Primero me encontré con un montón de malas conexiones que ahora se fijan, espero.
Ahora he encontrado 2 columnas completas, 1 fila completa y un par de LED's más que no se encienden, la fila del medio donde hay 3 LED's que no se encienden se enciende cuando pongo todo a 0 en vez de 250.
Si quito el "~" del código, obtengo esto:
Actualización 2
Probé la idea de @James y moví las resistencias de las columnas a las filas, pero eso no solucionó el problema sino que sólo movió algunos de los píxeles de luz encendida