int dice;
int new_dice;
float tempo = 100;
float bounce;
void setup() {
// put your setup code here, to run once:
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, INPUT_PULLUP);
randomSeed(analogRead(PB0));
//dice = random(1,7);
}
void show_num(int num) {
switch (num) {
case 0:
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
break;
case 1:
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
break;
case 2:
digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
break;
case 3:
digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
break;
case 4:
digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
break;
case 5:
digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
break;
case 6:
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
break;
}
}
void loop() {
show_num(0);
while (digitalRead(4) == HIGH) {};
new_dice = random(1, 7);
show_num(new_dice);
tempo = 100;
while (tempo < 1000) {
show_num(dice);
do {
new_dice = random(1,7);
} while (new_dice == dice);
dice = new_dice;
delay(tempo);
bounce = random(110, 140)/100.0;
tempo *= bounce;
};
delay(1000);
}