/* Digital Rulet LEFT RIGHT 3 3 --- --- 1 | 4 | 6 1 | 4 | 6 --- --- 2 | 5 | 7 2 | 5 | 7 --- --- L_LEDx R_LEDx */ #define LED_BIT0 0 #define LED_BIT1 1 #define LED_BIT2 2 #define LED_BIT3 3 #define LED_CTL 4 #define SW_START 9 #define SW_TEST 10 #define R_LED1 0x0001 #define R_LED2 0x0002 #define R_LED3 0x0004 #define R_LED4 0x0008 #define R_LED5 0x0010 #define R_LED6 0x0020 #define R_LED7 0x0040 #define L_LED1 0x0100 #define L_LED2 0x0200 #define L_LED3 0x0400 #define L_LED4 0x0800 #define L_LED5 0x1000 #define L_LED6 0x2000 #define L_LED7 0x4000 #define LED_READY 0x8000 int rulet_num[38]={37,1,13,36,24,3,15,34,22,5,17,32,20,7,11,30,26,9,28,0,2,14,35,23,4,16,33,21,6,18,31,19,8,12,29,25,10,27}; int current_num = 99; // Store the current rulet ball position, 99 indicates the initial status. int digit_array[] = { R_LED1|R_LED2|R_LED3 |R_LED5|R_LED6|R_LED7, //0 R_LED6|R_LED7|R_LED6|R_LED7, //1 R_LED2|R_LED3|R_LED4|R_LED5|R_LED6 , //2 R_LED3|R_LED4|R_LED5|R_LED6|R_LED7, //3 R_LED1 |R_LED4 |R_LED6|R_LED7, //4 R_LED1 |R_LED3|R_LED4|R_LED5 |R_LED7, //5 R_LED1|R_LED2|R_LED3|R_LED4|R_LED5 |R_LED7, //6 R_LED1 |R_LED3 |R_LED6|R_LED7, //7 R_LED1|R_LED2|R_LED3|R_LED4|R_LED5|R_LED6|R_LED7, //8 R_LED1 |R_LED3|R_LED4|R_LED5|R_LED6|R_LED7, //9 L_LED6|L_LED7|L_LED6|L_LED7|R_LED1|R_LED2|R_LED3 |R_LED5|R_LED6|R_LED7, //10 L_LED6|L_LED7|L_LED6|L_LED7 |R_LED6|R_LED7|R_LED6|R_LED7, //11 L_LED6|L_LED7|L_LED6|L_LED7 |R_LED2|R_LED3|R_LED4|R_LED5|R_LED6 , //12 L_LED6|L_LED7|L_LED6|L_LED7 |R_LED3|R_LED4|R_LED5|R_LED6|R_LED7, //13 L_LED6|L_LED7|L_LED6|L_LED7|R_LED1 |R_LED4 |R_LED6|R_LED7, //14 L_LED6|L_LED7|L_LED6|L_LED7|R_LED1 |R_LED3|R_LED4|R_LED5 |R_LED7, //15 L_LED6|L_LED7|L_LED6|L_LED7|R_LED1|R_LED2|R_LED3|R_LED4|R_LED5 |R_LED7, //16 L_LED6|L_LED7|L_LED6|L_LED7|R_LED1 |R_LED3 |R_LED6|R_LED7, //17 L_LED6|L_LED7|L_LED6|L_LED7|R_LED1|R_LED2|R_LED3|R_LED4|R_LED5|R_LED6|R_LED7, //18 L_LED6|L_LED7|L_LED6|L_LED7|R_LED1 |R_LED3|R_LED4|R_LED5|R_LED6|R_LED7, //19 L_LED2|L_LED3|L_LED4|L_LED5|L_LED6 |R_LED1|R_LED2|R_LED3 |R_LED5|R_LED6|R_LED7, //20 L_LED2|L_LED3|L_LED4|L_LED5|L_LED6 |R_LED6|R_LED7|R_LED6|R_LED7, //21 L_LED2|L_LED3|L_LED4|L_LED5|L_LED6 |R_LED2|R_LED3|R_LED4|R_LED5|R_LED6 , //22 L_LED2|L_LED3|L_LED4|L_LED5|L_LED6 |R_LED3|R_LED4|R_LED5|R_LED6|R_LED7, //23 L_LED2|L_LED3|L_LED4|L_LED5|L_LED6 |R_LED1 |R_LED4 |R_LED6|R_LED7, //24 L_LED2|L_LED3|L_LED4|L_LED5|L_LED6 |R_LED1 |R_LED3|R_LED4|R_LED5 |R_LED7, //25 L_LED2|L_LED3|L_LED4|L_LED5|L_LED6 |R_LED1|R_LED2|R_LED3|R_LED4|R_LED5 |R_LED7, //26 L_LED2|L_LED3|L_LED4|L_LED5|L_LED6 |R_LED1 |R_LED3 |R_LED6|R_LED7, //27 L_LED2|L_LED3|L_LED4|L_LED5|L_LED6 |R_LED1|R_LED2|R_LED3|R_LED4|R_LED5|R_LED6|R_LED7, //28 L_LED2|L_LED3|L_LED4|L_LED5|L_LED6 |R_LED1 |R_LED3|R_LED4|R_LED5|R_LED6|R_LED7, //29 L_LED3|L_LED4|L_LED5|L_LED6|L_LED7|R_LED1|R_LED2|R_LED3 |R_LED5|R_LED6|R_LED7, //30 L_LED3|L_LED4|L_LED5|L_LED6|L_LED7 |R_LED6|R_LED7|R_LED6|R_LED7, //31 L_LED3|L_LED4|L_LED5|L_LED6|L_LED7 |R_LED2|R_LED3|R_LED4|R_LED5|R_LED6 , //32 L_LED3|L_LED4|L_LED5|L_LED6|L_LED7 |R_LED3|R_LED4|R_LED5|R_LED6|R_LED7, //33 L_LED3|L_LED4|L_LED5|L_LED6|L_LED7|R_LED1 |R_LED4 |R_LED6|R_LED7, //34 L_LED3|L_LED4|L_LED5|L_LED6|L_LED7|R_LED1 |R_LED3|R_LED4|R_LED5 |R_LED7, //35 L_LED3|L_LED4|L_LED5|L_LED6|L_LED7|R_LED1|R_LED2|R_LED3|R_LED4|R_LED5 |R_LED7, //36 L_LED1|L_LED2|L_LED3 |L_LED5|L_LED6|L_LED7|R_LED1|R_LED2|R_LED3 |R_LED5|R_LED6|R_LED7 //00 }; // The setup() method runs once, when the sketch starts void setup() { // initialize the digital pin as an output: pinMode(LED_BIT0, OUTPUT); // for 4bit decorder bit0 pinMode(LED_BIT1, OUTPUT); // for 4bit decorder bit1 pinMode(LED_BIT2, OUTPUT); // for 4bit decorder bit2 pinMode(LED_BIT3, OUTPUT); // for 4bit decorder bit3 pinMode(LED_CTL, OUTPUT); // for decorder on/off pinMode(SW_START, INPUT); // For tact SW for start rulet pinMode(SW_TEST, INPUT); // For tact SW for test display } // Circulate lights as rulet ball void rulet_circulate() { int delay_base = 200; int i, j, k; int random_val; for(i=10; i>0; i-=2) { random_val = random(0,i*2) + i; // Random Integer; to define number of slots that a ball moves. for(j=0; j 37 ) { current_num = 0; } for(k=0; k<((11-i)*delay_base); k++) { // Ball speed control. Faster to slower. led_display(digit_array[rulet_num[current_num]]); } } } } // Rulet light test void rulet_test() { int delay_base = 1500; int i, k; for(i=0; i<38; i++) { for(k=0; k