Projeto 43
Jogo do dado
Projeto 43 - Jogo do dado
Código (download)
/*
Projeto 43 - Jogo do dado
Física na Lixa
https://fisicanalixa.blogspot.com/
https://sites.google.com/aelixa.pt/fisicaearduino
*/
int PinLED[7] = {2, 3, 4, 5, 6, 7, 8}; //Pinos dos LEDs
int FacesDoDado[7][7] =
{
{0, 0, 0, 0, 0, 0, 1}, //0 - Face 1
{0, 0, 1, 1, 0, 0, 0}, //1 - Face 2
{0, 0, 1, 1, 0, 0, 1}, //2 - Face 3
{1, 0, 1, 1, 0, 1, 0}, //3 - Face 4
{1, 0, 1, 1, 0, 1, 1}, //4 - Face 5
{1, 1, 1, 1, 1, 1, 0}, //5 - Face 6
{0, 0, 0, 0, 0, 0, 0} //6 - LEDs desligados
};
int pinBTN = 9;
int estadoBTN;
int desligados = 6;
void setup()
{
for (int i=0; i<7; i++)
{
pinMode(PinLED[i], OUTPUT);
digitalWrite(PinLED[i], LOW);
}
pinMode(pinBTN, INPUT);
randomSeed(analogRead(0)); //Inicia o gerador de números aleatórios com a entrada analógica A0
}
void loop()
{
estadoBTN = digitalRead(pinBTN);
if (estadoBTN == 1)
{
lancaDADO();
}
delay(100);
}
void lancaDADO()
{
int resultado = 0;
int lancamento = random(15, 25); //Representa o número de voltas que o dado dá
for (int i=0; i<lancamento; i++)
{
resultado = random(0, 6); //O resultado será de 0 a 5 e não de 1 a 6
mostrar(resultado);
delay(50 + i * 10);
}
for (int j=0; j<3; j++)
{
mostrar(desligados);
delay(500);
mostrar(resultado);
delay(500);
}
}
void mostrar(int resultado)
{
for (int i=0; i<7; i++)
{
digitalWrite(PinLED[i], FacesDoDado[resultado][i]);
}
}