The centerpiece of the tilt game is the accelerometer. Without it there would be no way to detect which direction the board was tilted. By setting a baseline with the accelerometer and then checking to see if a value exceeds a threshold around the baseline one can tell exactly which direction the board is tilted. This is due to the fact that gravity will exert an 'acceleration' force on the x or y axis of the accelerometer only when that respective axis has a component in the up/ down direction (IE the board is not flat and level.) If this does not happen gravity will have no effect on the reading given on either of these axis.
In terms of the automatic rotation of the board, a 180 degree servo is used along with a gear train with a ratio 1:3.7. This was a solution that took a lot of brainstorming to find. I wanted to have the position control of a standard servo with the freedom of a 360 degree servo. By using this gearing it means that with only 180 degrees of rotation from the servo I am still able to achieve 1.85 rotations of my game. This is more than enough to ensure that I can make any side point up. The other advantage of using this gear system is that it allows me to spin my board at a much faster speed than what the servo can spin, thereby allowing the automation run nearly as fast, if not faster than, a human can manipulate the board.