Some time ago i've seen on Hackaday this project. Back then i didn't have much time for my hobby, but I always wanted to make something similar myself. Now is a good time for this.
My version of electronic dice also has two-digit charlieplexed display, but lacks indicator of currently chosen dice. The user has to push left button (Choose Dice) once to see what dice is currently selected. Next pushes allows to change dice to one of defined in software. There is a small delay (about half a second) to prevent changing dice too fast. Additionally, in dice choosing mode, a green LED is lit (the one placed near right button). A button on the right side is for rolling the dice. User can see an animation of a dot running around the display while holding this button. After release, a result of rolling is displayed immediately and device prevents from accidental (or intentional) roll for next one second.
Now it has following dices defined: 1d4, 1d6, 1d8, 1d10, 1d12, 1d20, 1d100 and 2d6. There is a possibility to define other sets of two dices as long as they have less than 10 sides (because of display limitation). Whenever any of 2dX set is selected, there will be LED flashing in the middle of display.
Random number generation is made of using timer, which count system clock while user holds the Roll button. It cleares itself while counter reaches number set when user have chosen dice. After button release the software checks value of timer and adds 1 to this value. The timer counts all system ticks, without prescaler, and there is about million of them in each second, so it is hard for a human to hold a button for the right amount of time for rolling intended number.
The device is made around ATTiny24 microcontroller running on internal 8MHz RC clock divided by 8. Software takes 1300 bytes in current version. There is still some room for improvement, because now current consumption with display turnt off is 1,9mA at 5V and 0,8mA at 3,3V (with all LEDs lit it's 10,3mA at 5V and 4,4mA at 3,3V). For now the only measure for saving current is turning off the display after 5 seconds of inactivity. I hope i can make it less with some sleeping mode and then i will think about powering from supercaps, like the original one.
After making this dice i realised the display has poor readability because every segment is made of only one nearly square dot. To counter that I want to make a 3D printed case with 'windows' for each segment. Then the project will be finished.