#include <SPI.h>
#define CS 22
#define ENABLE LOW
#define DISABLE HIGH
byte cara1[]={0x0, 0x78, 0xcc, 0xcc, 0xfc, 0xcc, 0xcc, 0xcc};
byte pacman[]={0x38, 0x7c, 0xfe, 0xf0, 0xf0, 0xfe, 0x7c, 0x38};
byte pacman1[]={0x78, 0xfc, 0xfe, 0x3e, 0x3e, 0xfe, 0xfc, 0x78};
byte pacman2[]={0xf0, 0xf8, 0xfc, 0x7c, 0x7c, 0xfc, 0xf8, 0xf0};
byte pacman3[]={0xe0, 0xf0, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xe0};
byte pacman4[]={0xc0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0};
byte pacman5[]={0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80};
byte fantasma[]={0x3c, 0x7e, 0xd7, 0xff, 0xc3, 0xff, 0xff, 0xdb};
int desplazamiento = 0;
byte conf[]= {0x00,0x07,0x07,0x01};
SPISettings MySettings(200000, MSBFIRST, SPI_MODE0);
void setup(){
pinMode(CS, OUTPUT);
digitalWrite(CS,DISABLE);
SPI.begin();
SPI.beginTransaction(MySettings);
//conf del max
for(byte i=0x09; i<= 0x0c; i++){
funcSPI(i,conf[i-9]);
}
//prueba displays
funcSPI (0x0f,0x00);
delay(1000);
funcSPI(0x0f,0x00);
}
void shiftRight() {
byte temp = fantasma[7];
for (int i = 7; i > 0; i--) {
fantasma[i] = fantasma[i - 1];
}
fantasma[0] = temp;
}
void funcSPI(byte dir, byte dat){
digitalWrite(CS,ENABLE);
SPI.transfer(dir);
SPI.transfer(dat);
digitalWrite(CS,DISABLE);
}
void shiftLeft() {
byte temp = pacman[0];
for (int i = 0; i < 7; i++) {
pacman[i] = pacman[i + 1];
}
pacman[7] = temp;
}
void encenderTodasLasLuces() {
for (int columna = 1; columna <= 8; columna++) {
funcSPI(columna, 0xFF); // 0xFF representa todas las luces encendidas (valor hexadecimal)
}
}
void loop() {
// Desplazar la imagen hacia la derecha
for (int i = 0; i < 8; i++) {
// Limpia la primera columna
funcSPI(i, 0);
}
// Mostrar la imagen en la nueva posición (inicia con el fantasma)
for (int i = 0; i < 8; i++) {
funcSPI(i+1, fantasma[(i ) ]);
}
delay(1000); // Espera un segundo antes de cambiar a Pac-Man
// Limpia la matriz para mostrar a Pac-Man
for (int i = 0; i < 8; i++) {
funcSPI(i, 0);
}
// Mostrar a Pac-Man en la nueva posición
for (int i = 0; i < 8; i++) {
funcSPI(i+1, pacman[(i) ]);
}
delay(1000); // Espera un segundo antes de la próxima iteración
for (int i = 0; i < 8; i++) {
funcSPI(i+1, pacman1[(i ) ]);
}
delay(1000);
for (int i = 0; i < 8; i++) {
funcSPI(i+1, pacman2[(i ) ]);
}
delay(1000);
for (int i = 0; i < 8; i++) {
funcSPI(i+1, pacman3[(i ) ]);
}
delay(1000);
for (int i = 0; i < 8; i++) {
funcSPI(i+1, pacman4[(i ) ]);
}
delay(1000);
for (int i = 0; i < 8; i++) {
funcSPI(i+1, pacman5[(i ) ]);
}
delay(1000);
//shiftLeft();
// Actualizar la pantalla con los nuevos datos
for (int i = 0; i < 8; i++) {
funcSPI(i + 1, pacman[i]);
}
delay(1000);
}
void shiftUp() {
for (int i = 0; i < 7; i++) {
fantasma[i] = fantasma[i + 1];
}
// Define el nuevo valor para la fila inferior del fantasma (puedes usar cualquier valor deseado)
fantasma[7] = 0x00; // En este caso, la fila inferior se apaga
}