/*
Projeto 52 - Dado com a matriz LED 8x8 com Driver MAX7219
Física na Lixa
https://fisicanalixa.blogspot.com/
https://sites.google.com/aelixa.pt/fisicaearduino
*/
#include "LedControl.h"
const byte SMILE[] = { B00111100,
B01000010,
B10100101,
B10000001,
B10100101,
B10011001,
B01000010,
B00111100 };
const byte N1[] = { B00000000,
B00000000,
B00000000,
B00011000,
B00011000,
B00000000,
B00000000,
B00000000 };
const byte N2[] = { B11000000,
B11000000,
B00000000,
B00000000,
B00000000,
B00000000,
B00000011,
B00000011 };
const byte N3[] = { B11000000,
B11000000,
B00000000,
B00011000,
B00011000,
B00000000,
B00000011,
B00000011 };
const byte N4[] = { B11000011,
B11000011,
B00000000,
B00000000,
B00000000,
B00000000,
B11000011,
B11000011 };
const byte N5[] = { B11000011,
B11000011,
B00000000,
B00011000,
B00011000,
B00000000,
B11000011,
B11000011 };
const byte N6[] = { B11000011,
B11000011,
B00000000,
B11000011,
B11000011,
B00000000,
B11000011,
B11000011 };
const int atraso = 500;
const int pisca = 4; //Número de vezes que os LED piscam
const int PinBTN = 5;
LedControl lc = LedControl(2, 4, 3, 1);
int estado;
int numero;
void setup()
{
lc.shutdown(0, false);
lc.setIntensity(0, 8); //Brilho
lc.clearDisplay(0);
pinMode(PinBTN, INPUT_PULLUP);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, SMILE[i]);
}
}
void loop()
{
estado = 1;
while(estado == 1)
{
estado = digitalRead(PinBTN);
}
lancarDADO();
randomSeed(millis());
numero = random(1, 7);
switch (numero)
{
case 1:
for (int j = 0; j < pisca; j++)
{
lc.clearDisplay(0);
delay(atraso);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N1[i]);
}
delay(atraso);
}
break;
case 2:
for (int j = 0; j < pisca; j++)
{
lc.clearDisplay(0);
delay(atraso);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N2[i]);
}
delay(atraso);
}
break;
case 3:
for (int j = 0; j < pisca; j++)
{
lc.clearDisplay(0);
delay(atraso);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N3[i]);
}
delay(atraso);
}
break;
case 4:
for (int j = 0; j < pisca; j++)
{
lc.clearDisplay(0);
delay(atraso);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N4[i]);
}
delay(atraso);
}
break;
case 5:
for (int j = 0; j < pisca; j++)
{
lc.clearDisplay(0);
delay(atraso);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N5[i]);
}
delay(atraso);
}
break;
case 6:
for (int j = 0; j < pisca; j++)
{
lc.clearDisplay(0);
delay(atraso);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N6[i]);
}
delay(atraso);
}
break;
}
delay(500);
}
void lancarDADO()
{
for (int i = 1; i < 5; i++)
{
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N1[i]);
}
delay(80);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N2[i]);
}
delay(80);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N3[i]);
}
delay(80);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N4[i]);
}
delay(80);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N5[i]);
}
delay(80);
for (int i = 0; i < 8; i++)
{
lc.setRow(0, i, N6[i]);
}
delay(80);
}
}