#include "LedControl.h" // incluye libreria LedControl
LedControl lc = LedControl(11, 13, 10, 2); // crea objeto
const byte MENOS[8] = { // array que contiene toDOS los elementos de las
0b00000000, // filas necesarias por mostrar el digito UNO
0b00000000,
0b00000000,
0b00011111,
0b00000000,
0b00000000,
0b00000000,
0b00000000
};
const byte CERO[8] = { // array que contiene toDOS los elementos de las
0b00111100, // filas necesarias por mostrar el digito CERO
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b01000010,
0b00111100
};
const byte UNO[8] = { // array que contiene toDOS los elementos de las
0b00001000, // filas necesarias por mostrar el digito UNO
0b00011000,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b00011100
};
const byte DOS[8] = { // array que contiene toDOS los elementos de las
0b00111100, // filas necesarias por mostrar el digito DOS
0b01000010,
0b00000010,
0b00000010,
0b00111100,
0b01000000,
0b01000000,
0b01111110
};
const byte TRES[8] = { // array que contiene toDOS los elementos de las
0b00111100, // filas necesarias por mostrar el digito TRES
0b01000010,
0b00000010,
0b00011100,
0b00000010,
0b00000010,
0b01000010,
0b00111100
};
const byte CUATRO[8] = { // array que contiene toDOS los elementos de las
0b00000100, // filas necesarias por mostrar el digito CUATRO
0b00001100,
0b00010100,
0b00100100,
0b01000100,
0b01111110,
0b00000100,
0b00000100
};
const byte CINCO[8] = { // array que contiene toDOS los elementos de las
0b01111110, // filas necesarias por mostrar el digito CINCO
0b01000000,
0b01000000,
0b01111100,
0b00000010,
0b00000010,
0b01000010,
0b00111100
};
const byte SEIS[8] = { // array que contiene toDOS los elementos de las
0b00111100, // filas necesarias por mostrar el digito SEIS
0b01000000,
0b01000000,
0b01111100,
0b01000010,
0b01000010,
0b01000010,
0b00111100
};
const byte SIETE[8] = { // array que contiene toDOS los elementos de las
0b01111110, // filas necesarias por mostrar el digito SIETE
0b00000010,
0b00000010,
0b00000100,
0b00001000,
0b00010000,
0b00010000,
0b00010000
};
const byte OCHO[8] = { // array que contiene toDOS los elementos de las
0b00111100, // filas necesarias por mostrar el digito OCHO
0b01000010,
0b01000010,
0b00111100,
0b01000010,
0b01000010,
0b01000010,
0b00111100
};
const byte NUEVE[8] = { // array que contiene toDOS los elementos de las
0b00111100, // filas necesarias por mostrar el digito NUEVE
0b01000010,
0b01000010,
0b01000010,
0b00111110,
0b00000010,
0b00000010,
0b00111100
};
const byte VACIO[8] = { // array que contiene toDOS los elementos de las
0, 0, 0, 0, 0, 0, 0, 0
};
const byte LETRAP[8] = { // array que contiene toDOS los elementos de las
0b01111100,
0b01000010,
0b01000010,
0b01000010,
0b01111100,
0b01000000,
0b01000000,
0b01000000
};
const byte LETRAB[8] = { // array que contiene toDOS los elementos de las
0b01111100,
0b01000010,
0b01000010,
0b01111100,
0b01000010,
0b01000010,
0b01000010,
0b01111100
};
/*struct pp_t {
byte *ptr1[2];
// byte *ptr2;
};
pp_t digits[16][2] = {{LETRAP, LETRAB}, {VACIO, UNO}, {VACIO, DOS}, {VACIO, TRES}, {VACIO, CUATRO}, {VACIO, CINCO}, {VACIO, SEIS}, {VACIO, SIETE},
{VACIO, OCHO}, {VACIO, NUEVE}, {UNO, CERO}, {UNO, UNO}, {UNO, DOS}, {UNO, TRES}, {UNO, CUATRO}, {MENOS, UNO}
};*/
byte *digits[16][2] = {{LETRAP, LETRAB}, {VACIO, UNO}, {VACIO, DOS}, {VACIO, TRES}, {VACIO, CUATRO}, {VACIO, CINCO}, {VACIO, SEIS}, {VACIO, SIETE},
{VACIO, OCHO}, {VACIO, NUEVE}, {UNO, CERO}, {UNO, UNO}, {UNO, DOS}, {UNO, TRES}, {UNO, CUATRO}, {MENOS, UNO}
};
const byte A651 = 2;
const byte B652 = 3;
const byte C653 = 4;
const byte D654 = 5;
const byte MASCARA = 0b00111100;
byte anterior = 255;
void setup() {
//Matriz 1
lc.shutdown(0, false); // enciende la matriz
lc.setIntensity(0, 4); // establece brillo
lc.clearDisplay(0);
//Matriz 2
lc.shutdown(1, false);
lc.setIntensity(1, 4);
lc.clearDisplay(1);
//Estos pines es de las 4 entradas binarias
pinMode (A651, INPUT_PULLUP);
pinMode (B652, INPUT_PULLUP);
pinMode (C653, INPUT_PULLUP);
pinMode (D654, INPUT_PULLUP);
}
void loop() {
byte entradas = (PIND & MASCARA) >> 2;
if (entradas != anterior) {
delay(50);
anterior = entradas;
for (byte i = 0; i < 8; i++) {
for (byte j = 0; j < 2; j++) {
//lc.setRow(1 - j, i, *(*(*(digits + entradas) + j) + i));
lc.setRow(1 - j, i, digits[entradas][j][i]);
}
}
}
delay(50);
}