Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



34 Commits

Repository files navigation


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


Code and files for a mechanical flipbox animation






No releases published


No packages published


  • Other 100.0%