#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte Z0[] = { //Parte de cima do zero
B01110,
B11111,
B11111,
B11011,
B11011,
B11011,
B11011,
B11011
};
byte Z1[] = { //Parte de baixo do zero
B11011,
B11011,
B11011,
B11011,
B11011,
B11111,
B11111,
B01110
};
byte U0[] = { //Parte de cima do um
B00110,
B01110,
B11110,
B11110,
B00110,
B00110,
B00110,
B00110
};
byte U1[] = { //Parte de baixo do um
B00110,
B00110,
B00110,
B00110,
B00110,
B00110,
B11111,
B11111
};
byte D0[] = { //Parte de cima do dois
B01110,
B11111,
B11111,
B11011,
B00011,
B00011,
B00111,
B01110
};
byte D1[] = { //Parte de baixo do dois
B11100,
B11100,
B11000,
B11000,
B11000,
B11111,
B11111,
B11111
};
byte T0[] = { //Parte de cima do três
B01110,
B11111,
B11111,
B11011,
B00011,
B00011,
B00111,
B01110
};
byte T1[] = { //Parte de baixo do três
B01110,
B00111,
B00011,
B00011,
B11011,
B11111,
B11111,
B01110
};
byte V0[] = { //São símbolos vazios, necessários para o início adequado dos símbolos no lcd
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000
};
byte V1[] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000
};
byte* PC[4] = {Z0, U0, D0, T0}; // Parte de cima dos números em vetor
byte* PB[4] = {Z1, U1, D1, T1}; // Parte de baixo dos números em vetor
byte* Cima[4] = {V0, V0, V0, V0}; //Apaga o número gerando o efeito de flip
byte* Baixo[4] = {V1, V1, V1, V1};
void IC(int x, int y, int z = 0) { //Imprime os vetores V0 e V1
lcd.setCursor(y, z); //Localização do caractere
lcd.write(x);
delay(25); //Tempo para que ocorra o flip
}
void AL(int x, int c) { //Apaga o carctere exibido na tela, efeito do flip
for (int d = 0; d < 8; d++) {
Cima[x][d] = PC[c][d];
lcd.createChar(x + 1, Cima[x]);
IC(x + 1, x, 0);
}
for (int d = 0; d < 8; d++) {
Baixo[x][d] = PB[c][d];
lcd.createChar(x + 5, Baixo[x]);
IC(x + 5, x, 1);
}
}
void setup() {
lcd.begin(16, 2);
}
void loop() {
for (int a = 0; a < 4; a++) {
for (int b = 0; b < 4; b++) {
for (int c = 0; c < 4; c++) {
for (int d = 0; d < 4; d++) {
AL(0, d );
}
AL(1, c);
}
AL(2, b);
}
AL(3, a);
}
}