/******************************************************************************* * * Projeto 60: Dado eletrônico - Arduino * http://squids.com.br/arduino * *******************************************************************************/ byte estadoBtn = 0; const byte btPin = 12; const byte face [6] = { B00001100, // = Digito 1 B10110110, // = Digito 2 B10011110, // = Digito 3 B11001100, // = Digito 4 B11011010, // = Digito 5 B11111010 // = Digito 6 }; void setup() { pinMode(btPin , INPUT_PULLUP); // difine entrada do push button como pull up interno DDRD = B11111110; //Configura os pinos digitais de 1 até 7 como saída digital PORTD = 0; // apaga todos os leds randomSeed(analogRead(0)); // inicializa o ramdom sem repetição de séries } void loop() { estadoBtn = digitalRead(btPin); if(!estadoBtn){ rodadada(); // gera a rodada do dado delay(150); } } void rodadada(){ byte result = 0; // inicializa a variável "result" com 0 byte rodada = random(15, 35); // gera comprimento da rodada, quantos números passarão for (byte i = 0; i < rodada; i++) // loop de 0 até comprimento da rodada { result = random(0, 6); // gera número de 0 a 6, devido à matriz face começar em 0 show(result); // mostra resultado delay(50 + i * 10); // espera para passar cada número (varia velocidade) } } // mostra o resultado da face do dado no display void show(int result) { PORTD = face[result]; }