I also think a very slow motor to turn the cube would be in order. Since there will be a power cord, maybe an arduino control so that it only rotates so far before reversing, would also allow me to adjust the speed I think.
An inexpensive
28BYJ-48 might work for small models, but it isn't very powerful.
- Near the bottom of that post, there's a link to an Arduino sketch to do back-and-forth rotation with that motor.
If you need more power, a NEMA 17 stepper motor (commonly used in 3d printers) would be a good choice for this application.
https://forum.arcadecontrols.com/index.php/topic,161063.0.htmlSince the motor will be rotating slowly, an A4988 driver is probably quiet enough.
- If the motor is too noisy, upgrade to a
TMC2130 V1.1 that has the same basic pinout as the A4988. (handy for swapping it on a breadboard while testing)
To power the motor and Arduino, you will need 5v, 12v, and ground.
- You can get them from either an arcade-style power supply or a Molex in your computer.
- The DPST is a power switch for the 5v and 12v. Ground is always connected.
- On the 5v input to the Arduino, use a 10uF electrolytic capacitor for filtering.
- On the 12v input to the driver, use a 100uF electrolytic capacitor for filtering.
The stepper motor connects to breadboard j24 thru j28.
For your setup, you might not need the limit switches on breadboard b5 and b6, but they would be a very good way to avoid getting the power cable for the hypercube all twisted up.
- To make it bulletproof, you can use hall-effect sensors for the main limit switches and add an emergency microswitch limit switch in case the motor is too close to the hall-effect switch when power is applied. The reverse only triggers on the high/low transition. If the magnet starts too close to the switch, it will be below logic high so it won't reverse. I have an updated sketch with the emergency switch feature if you're interested.
To do the back-and-forth motion without limit switches, you'll need to modify the Arduino sketch from the other thread.
- In the main program loop, you can use one for/next loop to go x steps in one direction, then a second for/next loop to go in the other direction.

Scott