#include <SPI.h>
#define MAX7219_CS_PIN 22
#define MAX7219_REG_NOOP 0x00
#define MAX7219_REG_DIGIT0 0x01
#define MAX7219_REG_DIGIT1 0x02
#define MAX7219_REG_DIGIT2 0x03
#define MAX7219_REG_DIGIT3 0x04
#define MAX7219_REG_DIGIT4 0x05
#define MAX7219_REG_DIGIT5 0x06
#define MAX7219_REG_DIGIT6 0x07
#define MAX7219_REG_DIGIT7 0x08
byte letraA[8] = {0x00, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66};
byte letraB[8] = {0x00, 0x1E, 0x66, 0x66, 0x1E, 0x66, 0x66, 0x1E};
byte letraC[8]= {0x0, 0x1c, 0x33, 0x3, 0x3, 0x3, 0x32, 0xc};
byte letraD[8]={0x0, 0x7f, 0x3, 0x3, 0x1f, 0x3, 0x3, 0x7f};
byte carafeliz[8]={0x0, 0x24, 0x24, 0x24, 0x0, 0x81, 0x42, 0x3c};
void enviarComando(byte reg, byte dato) {
digitalWrite(MAX7219_CS_PIN, LOW);
SPI.transfer(reg);
SPI.transfer(dato);
digitalWrite(MAX7219_CS_PIN, HIGH);
delay(1); // Pequeña pausa para asegurar que los datos se envíen correctamente
}
void setup() {
SPI.begin();
pinMode(MAX7219_CS_PIN, OUTPUT);
enviarComando(MAX7219_REG_NOOP, 0x00);
}
void loop() {
// Mostrar la letra "A"
for (int i = 0; i < 8; ++i) {
enviarComando(i + 1, letraA[i]);
}
delay(1000); // Esperar 1 segundo
// Mostrar la letra "B"
for (int i = 0; i < 8; ++i) {
enviarComando(i + 1, letraB[i]);
}
delay(1000); // Esperar 1 segundo
//MOSTRAR LETRA C
for (int i = 0; i < 8; ++i) {
enviarComando(i + 1, letraC[i]);
}
delay(1000); // Esperar 1 segundo
//MOSTRAR LETRA E
for (int i = 0; i < 8; ++i) {
enviarComando(i + 1, letraD[i]);
}
delay(1000);
for (int i = 0; i < 8; ++i) {
enviarComando(i + 1, carafeliz[i]);
}
delay(1000);
}