Cara, esse negocio vai me deixar doido. Consegui, em partes, liguei 9 colunas e 7 linhas em 2 595, e fiquei quase o dia todo tentando fazer um código funcionar, enfim, consegui achar um LSB primeiro, e funcionou, muito estranho, achei que o SR quem "ditava" se era MSB ou LSB, enfim, funcionou, to até mandando o códgo, vou fazer um videozinho e ja posto tambem.
agora é ligar o resto das colunas, e se firmar, refazer a PCI =/
Depois disso tudo, preciso bolar um jeito de deixar isso tudo mais claro, pq imaginar qual coluna e qual linha acender e "desenhar" uma letra, nao vi ser facil =)
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
void setup()
{
Serial.begin(9600);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
// digitalWrite(latchPin, 0);
// shiftIt(B11111111); // C2, C3, C4, C5, C6, C7, C8, C9
// shiftIt(B00000001); // L1, L2, L3, L4, L5, L6, L7, C1
// digitalWrite(latchPin, 1);
Serial.println("Iniciado!");
}
void loop()
{
digitalWrite(latchPin, 0);
shiftIt(B00000000);
shiftIt(B00000001);
digitalWrite(latchPin, 1);
Serial.println("Loop!");
delay(500);
digitalWrite(latchPin, 0);
shiftIt(B10000000);
shiftIt(B00000000);
digitalWrite(latchPin, 1);
Serial.println("Loop!");
delay(500);
digitalWrite(latchPin, 0);
shiftIt(B01000000);
shiftIt(B00000000);
digitalWrite(latchPin, 1);
Serial.println("Loop!");
delay(500);
digitalWrite(latchPin, 0);
shiftIt(B00100000);
shiftIt(B00000000);
digitalWrite(latchPin, 1);
Serial.println("Loop!");
delay(500);
digitalWrite(latchPin, 0);
shiftIt(B00010000);
shiftIt(B00000000);
digitalWrite(latchPin, 1);
Serial.println("Loop!");
delay(500);
digitalWrite(latchPin, 0);
shiftIt(B00001000);
shiftIt(B00000000);
digitalWrite(latchPin, 1);
Serial.println("Loop!");
delay(500);
digitalWrite(latchPin, 0);
shiftIt(B00000100);
shiftIt(B00000000);
digitalWrite(latchPin, 1);
Serial.println("Loop!");
delay(500);
digitalWrite(latchPin, 0);
shiftIt(B00000010);
shiftIt(B00000000);
digitalWrite(latchPin, 1);
Serial.println("Loop!");
delay(500);
digitalWrite(latchPin, 0);
shiftIt(B00000001);
shiftIt(B00000000);
digitalWrite(latchPin, 1);
Serial.println("Loop!");
delay(500);
}
// Estudar/Entender =)
void shiftIt(byte dataOut) {
// Shift out 8 bits LSB first,
// on rising edge of clock
boolean pinState;
//clear shift register read for sending data
digitalWrite(dataPin, LOW);
// for each bit in dataOut send out a bit
for (int i=0; i<8; i++) {
//set clockPin to LOW prior to sending bit
digitalWrite(clockPin, LOW);
// if the value of DataOut and (logical AND) a bitmask
// are true, set pinState to 1 (HIGH)
if ( dataOut & (1<<i) ) {
pinState = HIGH;
}
else {
pinState = LOW;
}
//sets dataPin to HIGH or LOW depending on pinState
digitalWrite(dataPin, pinState);
//send bit out on rising edge of clock
digitalWrite(clockPin, HIGH);
digitalWrite(dataPin, LOW);
}
//stop shifting
digitalWrite(clockPin, LOW);
}
EDITED: Estou usando os 5v do arduino mesmo, sem problemas até agora, nem esta esquentando direito, estou usando resistores de 150R =)
EDITED: Arduino + Painel de LED 9x7 - YouTube