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]);

  }

}