byte pin[] = {3, 4, 5, 6, 7, 8, 9};//arduino pin array
byte dice[] = {4,6,8,10,12,20};
int number[11][8] = {//number array
{0, 0, 0, 0, 0, 0, 1},//0
{1, 1, 0, 0, 1, 1, 1},//1
{0, 0, 1, 0, 0, 1, 0},//2
{1, 0, 0, 0, 0, 1, 0},//3
{1, 1, 0, 0, 1, 0, 0},//4
{1, 0, 0, 1, 0, 0, 0},//5
{0, 0, 0, 1, 0, 0, 0},//6
{1, 1, 0, 0, 0, 0, 1},//7
{0, 0, 0, 0, 0, 0, 0},//8
{1, 0, 0, 0, 0, 0, 0},//9
{1, 1, 1, 1, 1, 1, 1}//off
};
int i = 0;
int ran = 0;
String digits;
void setup() {
for (byte a = 0; a < 8; a++) {
pinMode(pin[a], OUTPUT);//define output pins
}
pinMode(2, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(0, INPUT_PULLUP);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
for (int b = 0; b < 100; b++){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[dice[i]][b]);
}
delay(10);
}
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
int digit2 = digits[1] - '0';//
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[10][b]);
}
}
void loop() {
//Serial.println(digitalRead(11));
//Serial.println(analogRead(A0));
//Buttonpres right
if (digitalRead(0) == 0){
//delay(500);
i++;
if (i > 5){
i=0;
}
if (dice[i] < 10){
for (int b = 0; b < 100; b++){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[dice[i]][b]);
}
delay(10);
}
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
else{
for (int b = 0; b < 100; b++){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
String digits = String(dice[i]);
int digit1 = digits[0] - '0';//
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[digit1][b]);
}
delay(5);
//Serial.println(digit1);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
int digit2 = digits[1] - '0';//
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[digit2][b]);
}
delay(5);
}
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
}
//Buttonpress left
if (digitalRead(2) == 0){
//delay(500);
i--;
if (i < 0){
i=5;
}
if (dice[i] < 10){
for (int b = 0; b < 100; b++){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[dice[i]][b]);
}
delay(10);
}
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
else{
for (int b = 0; b < 100; b++){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
String digits = String(dice[i]);
int digit1 = digits[0] - '0';//
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[digit1][b]);
}
delay(5);
//Serial.println(digit1);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
int digit2 = digits[1] - '0';//
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[digit2][b]);
}
delay(5);
}
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
int digit2 = digits[1] - '0';//
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[10][b]);
}
}
}
//Buttonpress middle
if (digitalRead(1) == 0 ){
//delay(500);
int a;
int digit1;
int digit2;
if (dice[i] < 10){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
for (int j=0; j < 20 ; j++){
a=random(1,(dice[i]+1));
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[a][b]);//display numbers
}
delay(50);
}
delay(2000);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
else{
for (int j=0; j<20; j++){
a=random(1,(dice[i]+1));
if (a < 10){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[a][b]);//display numbers
}
delay(50);
}
else{
for (int b = 0; b < 5; b++){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
String digits = String(a);
int digit1 = digits[0] - '0';//
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[digit1][b]);
}
delay(5);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
int digit2 = digits[1] - '0';//
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[digit2][b]);
}
delay(5);
}
}
}
if (a < 10){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[a][b]);//display numbers
}
delay(2000);
//Serial.print(a);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
else{
for (int b = 0; b < 200; b++){
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
String digits = String(a);
int digit1 = digits[0] - '0';//
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[digit1][b]);
}
delay(5);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
int digit2 = digits[1] - '0';//
for (int b = 0; b < 8; b++) {
digitalWrite(pin[b], number[digit2][b]);
}
delay(5);
}
//Serial.print(a);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
}
}
}
}