Code and files for a mechanical flipbox animation
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Althought this is not a full how-to, you can find design files here in case you want to replicate this project. Read the full story here or go directly to a video of the project in action.

Box Construction

  • All faces in a single file in the following formats: DXF, AI, SVG
  • Additional 1" bottom box for electronics in the following formats: DXF, AI, SVG

Additional parts

  • Frame holding wheel: DXF, AI, SVG and STL(since this part is suitable for 3D printing).
  • Small DC motor mount: DXF, AI, SVG and STL


This project can be replicated with any number of Arduino compatible boards, in my case, for space saving purpuses I used an Attiny85.

  • The speed of each motor is controlled via Pulse Width Modulation, because the microcontroller has a current and voltage limit, the switching is done by a transistor (see the Transistor Motor Control example on the Arduino website).
  • A small potentiometer serves as a physical interface to adjust the speed of each motor (see the Reading a potentiometer example).
  • There is a single button to start the operation and start the timer, so every time you press the button the animation plays for 1 minute and then stops (see Button Tutorial and Debounce Tutorial).

The specifics of my final circuit are as follows:

  • Attiny85 chip running with internal 1 MHZ clock
  • Powered by a 12v, 300 mA wall wart
  • Power is regulated by an L7805 voltage regulator with two electrolytic capacitors
    • 10 uF on the input
    • 47 uF on the output
  • Each motor control switches 12 v using:
    • TIP112 transistor
    • 1N4001 Diode
    • 270 Ohm resistor
  • Trimpots are 10 K ohm outside legs connected to 5v and Ground, middle leg to pins A1 and A2 respectively
  • Switch uses a pull-down 10 k resistor connected to ground and the other leg to 5v
  • Arduino Code

Note that in the above code the analog pins are referenced as A1, A2, and A3 which works with the Attiny85 microcontroller but not with other boards. Also, I changed the PWM frequency on line 75 to get rid of the motor buzzing at low speeds but this affects the delay() and millis() functions. Read more about compesanting for this at

More of my work at