I have now improved on my Arduino dice by adding a second digit. The code can be found below.
I have streamlined the code a bit but I left the constants in place so that it is easy to keep
track of which pin is connected to which led segment. I get confused easily so I have to make it
simple to change if neccessary!
#define LED1_A 6
#define LED1_B 5
#define LED1_C A3
#define LED1_D 12
#define LED1_E A0
#define LED1_F 7
#define LED1_G 8
#define LED1_H 13
#define LED2_A 2
#define LED2_B 3
#define LED2_C A5
#define LED2_D A4
#define LED2_E A2
#define LED2_F 9
#define LED2_G 10
#define LED2_H 11
#define BUTTON 4
const int leds [ 2 ][ 8 ] = {
{ LED1_A , LED1_B , LED1_C , LED1_D , LED1_E , LED1_F , LED1_G , LED1_H },
{ LED2_A , LED2_B , LED2_C , LED2_D , LED2_E , LED2_F , LED2_G , LED2_H }
};
char digits [ 10 ][ 7 ] = {
{ HIGH , HIGH , HIGH , HIGH , HIGH , HIGH , LOW },
{ LOW , HIGH , HIGH , LOW , LOW , LOW , LOW },
{ HIGH , HIGH , LOW , HIGH , HIGH , LOW , HIGH },
{ HIGH , HIGH , HIGH , HIGH , LOW , LOW , HIGH },
{ LOW , HIGH , HIGH , LOW , LOW , HIGH , HIGH },
{ HIGH , LOW , HIGH , HIGH , LOW , HIGH , HIGH },
{ HIGH , LOW , HIGH , HIGH , HIGH , HIGH , HIGH },
{ HIGH , HIGH , HIGH , LOW , LOW , LOW , LOW },
{ HIGH , HIGH , HIGH , HIGH , HIGH , HIGH , HIGH },
{ HIGH , HIGH , HIGH , HIGH , LOW , HIGH , HIGH }
};
int seed1 ;
int seed2 ;
int num1 = 0 ;
int num2 = 0 ;
int buttonState = 0 ;
const int delaid = 400 ;
void setup () {
Serial . begin ( 9600 );
pinMode ( A1 , INPUT ); // random seed generator
for ( int i = 0 ; i < 2 ; i ++ ) {
for ( int j = 0 ; j < 8 ; j ++ ) {
pinMode ( leds [ i ][ j ], OUTPUT );
digitalWrite ( leds [ i ][ j ], LOW );
}
}
seed1 = analogRead ( 1 );
pinMode ( BUTTON , INPUT );
}
void loop () {
buttonState = digitalRead ( BUTTON );
Serial . println ( buttonState );
if ( buttonState == HIGH ) {
num1 = random ( 1 , 7 );
num2 = random ( 1 , 7 );
} else {
disp ( 0 , digits [ num1 ]);
disp ( 1 , digits [ num2 ]);
}
}
void disp ( int led , char segment []) {
for ( int i = 0 ; i < 7 ; i ++ ) {
digitalWrite ( leds [ led ][ i ], segment [ i ]);
}
}