Se va acercando desde las 4 esquinas hacia el centro y cuando llega se enciende entero:
Código fuente:
//salidas que se van a utilizarint latchPin = 8; //patilla LT
int clockPin = 12; //patilla SK
int dataPin = 11; //patilla RI1
//array en el que se va a contener toda la informacin de filas y columnas
byte dato[4];
byte i;
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
dato[0]=0xFF;
dato[1]=0xFF;
dato[2]=0x00;
dato[3]=0x00;
envia_datos(dato);
}
void envia_datos(byte *matrix) {
digitalWrite(latchPin, 0);
for (byte i=4; i>2; i--) shiftOut(dataPin, clockPin, LSBFIRST, matrix[i-1]);
for (byte i=2; i>0; i--) shiftOut(dataPin, clockPin, MSBFIRST, matrix[i-1]);
digitalWrite(latchPin, 1);
delay(500);
}
void loop() {
dato[3]=0x01;
dato[2]=0x80;
dato[1]=0x7F;
dato[0]=0xFE;
envia_datos(dato);
delay(500);
for (i=0;i<6;i++){
dato[3]*=2;
bitClear(dato[3],7);
dato[2]/=2;
bitClear(dato[2],0);
dato[1]>>=1;
bitSet(dato[1], 7);
dato[0]<<=1;
bitSet(dato[0], 0);
envia_datos(dato);
delay(500);
}
dato[0]=0x00;
dato[1]=0x00;
dato[2]=0xFF;
dato[3]=0xFF;
envia_datos(dato);
delay(500);
dato[0]=0xFF;
dato[1]=0xFF;
dato[2]=0x00;
dato[3]=0x00;
envia_datos(dato);
delay(500);
}