Introduction: Split Flap Display

Picture of Split Flap Display

More and more, we're communicating with 3-letter abbreviations. BRB, LOL, WTF, etc. Smart phones, although convenient, are also adding to our disconnection from objects as things made by humans. This Split Flap Display brings text and animation back to its mechanical roots.

By pushing the buttons, you cycle through all the letters of the alphabet to spell out your thoughts in acronym form, and the last frame is an animation of the very first cat video (by Eadweard Muybridge). Why use high-resolution, multi-functional devices when you can get back to your industrial revolution roots?

Step 1: Tools + Materials

This project was designed (like pretty much all of my other projects) with Fusion 360. It's free, it's powerful, it's easy to learn, and the mechanical assembly tools make a project like this much easier than it would be otherwise.


The white parts are 3D printed on the Fortus 450mc we have at Pier 9. This is a high-end production quality machine, but there's no reason you couldn't make this project with a consumer grade desktop 3D printer. This machine is awesome because the resolution is much higher than my desktop machine. The thinner layer thickness makes for smoother surfaces, and it prints in ABS, ASA, and a number of other super durable materials. It also has a separate material for support structures that's soluble in a lye bath we have in the lab, so it makes for excellent results with minimal effort. If you don't have access to a 3D printer, 3D Hubs or Shapeways can print the parts for you.


The acrylic parts are laser cut on the Epilog laser cutters we also have at the Pier. I used 1/8" (3mm) for the brackets, wheels and spars, and 1/16" (1.5mm) for the tongue and the flaps. I painted the flaps and etched them on the laser to get the letters and the cat animation- I'll get into that process later. If you don't have access to a laser cutter, Ponoko can do the cutting for you. The etching is another story...


I used an Arduino Uno to control the servo motors by way of arcade buttons. Here's a full list of the electronic parts:

  1. Arduino Uno: $15.25
  2. Adafruit Motor Shield: $17.50
  3. Arcade Buttons (White), 28mm mount hole: $12.99 for 6-pack
  4. Continous Rotation Servo Motors: $15 for 2-pack
  5. 5V 10A Power Supply (for servo motor power): $25
  6. 5V 2A USB Power Supply (for Arduino): $6.95


I used M2 machine screws and nuts for all the fastening. The quantities below are per display module. The configuration I built has 4 modules, but you could build as many as you want and connect them. The Arduino motor shield has 16 channels, so if you want more than than that you'll have to find another means of controlling the rotation.

  1. M2 X 6mm Button Head Socket Cap Machine Screw: 56 total per module: $8.04 for 25-pack
  2. M2 X 12mm Button Head Socket Cap Machine Screw: 8 total per module: $7.44 for 25-pack
  3. M2 Hex Nuts: 64 per module: $2.08 for 100-pack
  4. Ball Bearing: Open Flanged, 52100 Steel, for 1/4" Shaft Diameter, 11/16" OD: 2 total per module: $3.55 ea.
  5. Miniature 12L14 Drive Steel Shaft 1/4" OD, 3" Length: 1 total per module: $3.44 ea.


To keep the modules secure while pushing the buttons, I made a simple laser cut plywood base. This is just cheap 1/4" birch plywood.

Step 2: Design

I found this old patent drawing of a split flap display to get a sense of what the right way to build it might be. It's pretty simple. The characters are split between two flaps, the flaps are hinged on a rotating spool, and there's a catch / tongue at the top to keep the upper flap from falling down.

This drawing depicts a display (probably for a clock) that only has numbers, so only 10 flaps are needed (1-9 and 0). I wanted mine to use text, so I went with 27 flaps (a-z and a blank).

This was pretty much all the info I needed to get going. With hardware models downloaded from McMaster Carr, I was able to figure out the motion of the different parts, the placement of gears and servos, and plan everything out before I started fabricating.

The STEP file in this step is the full model of the module pictured here. The STL files are ready for 3D printing. UPDATE: The PDF and AI files in this step have the full laser cut layout. It's got multiple copies of the parts, so be sure to only cut the number of parts you need.

Here's a link to the Fusion 360 file:

Fusion 360 is free for students and hobbyists, and there's a ton of educational support on it. If you want to learn to 3D model the kind of work I do, I think this is the best choice on the market. Click the links below to sign up:



Step 3: Split Flap Layout

The split flap layout with text was a bit tricky, but once you understand the concept it's pretty simple. Basically the "front" of each flap pair is a whole letter, and the "back" of each flap pair has the bottom of the next letter and the top of the previous letter. So "a" has the bottom of "b" behind its top flap, and the top of "z" behind its bottom flap.

The laser layout for the text modules looks like this:

Front layout

Back layout

The laser layout for the animation module works the same way as the text- the "front" of each flap pair is a whole frame, and the "back" of each flap pair has the bottom of the next frame and the top of the previous frame. The animation layout looks like this:

Front layout

Back layout

Step 4: Fabrication

The laser cutting was by far the most time-consuming and difficult part of the process. To get the etched letters to show up clearly, I painted the 1.5mm acrylic with a layer of white acrylic paint, then once that was dry covered it with a layer of black acrylic paint. That way I was able to dial in my etch settings so that the laser just burned off the black paint layer, leaving white letters on a black background.

Etching on Front Side of Layout

Etching on Back Side of Layout (Flipped Along Vertical Axis)

Cutting Complete (Back Side of Layout)

With the laser cutting complete, I moved on to assembly...

Step 5: Module Assembly

The drawings below spell out the assembly process in detail. Nut pockets are built into the 3D printed parts, and the acrylic parts all have t-slots. No glue is used because you never know when you might need to take it apart and replace something.

The hardest part is inserting the flaps. The trick is to assemble the wheel so that the screws and nuts are very loose- just barely held together. That way you can click the flaps into place one-by-one, then tighten all the screws once the flaps are in.

Step 6: Base Assembly

The base is pretty simple- it's just a hollow platform for the the flip display modules to sit on with brackets at each end to keep them secure. I made some plugs (pictured below in the drawing) that keep the modules together and prevent them from moving around when you push the buttons.

The PDF in this step has the laser cut layout for the 3mm acrylic and the 1/4" plywood, the STL files are ready for 3D printing, and the STEP file is the full assembly of the base.

Step 7: Electronics + Code


  • Analog Inputs: Pins 2-5: Button inputs. The arcade buttons are momentary switches, so one switch lead goes to ground and the other goes to the corresponding analog input on the Arduino.

  • Servo outputs: Terminals 0-3: Servo motors. These are built into the motor shield and the servos connect directly to them.


A lot of this code probably isn't necessary, but it ain't broke so why fix it? If you wanted to add more modules, you'd just add servo variables and button variables.

<p>/*************************************************** <br>  This is an example for our Adafruit 16-channel PWM & Servo driver
  Servo test - this will drive 16 servos, one after the other</p><p>  Pick one up today in the adafruit shop!
  ------> <a href=""> <a href="</a">

><p> ></p><p> These displays use I2C to communicate, 2 pins are required to interface. For Arduino UNOs, thats SCL -> Analog 5, SDA -> Analog 4</p><p> Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit!</p><p> Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/</p><p>#include <wire.h> #include <adafruit_pwmservodriver.h></adafruit_pwmservodriver.h></wire.h></p><p>// called this way, it uses the default address 0x40 Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); // you can also call it with a different address you want //Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x41);</p><p>// Depending on your servo make, the pulse width min and max may vary, you // want these to be as small/large as possible without hitting the hard stop // for max range. You'll have to tweak them as necessary to match the servos you // have! #define SERVOMIN 150 // this is the 'minimum' pulse length count (out of 4096) #define SERVOMAX 600 // this is the 'maximum' pulse length count (out of 4096)</p><p>// our servo # counter uint8_t servonum = 0; uint8_t servonum2 = 1; uint8_t servonum3 = 2; uint8_t servonum4 = 3;</p><p>void setup() { Serial.begin(9600); Serial.println("16 channel Servo test!"); //configure pin2 as an input and enable the internal pull-up resistor pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP);</p><p>#ifdef ESP8266 Wire.pins(2, 14); // ESP8266 can use any two pins, such as SDA to #2 and SCL to #14 #endif</p><p> pwm.begin(); pwm.setPWMFreq(60); // Analog servos run at ~60 Hz updates</p><p> yield(); }</p><p>// you can use this function if you'd like to set the pulse length in seconds // e.g. setServoPulse(0, 0.001) is a ~1 millisecond pulse width. its not precise.</p><p>void loop() { //read the pushbutton value into a variable int sensorVal = digitalRead(2); int sensorVal3 = digitalRead(3); int sensorVal4 = digitalRead(4); int sensorVal5 = digitalRead(5); //print out the value of the pushbutton Serial.println(sensorVal); Serial.println(sensorVal3); Serial.println(sensorVal4); Serial.println(sensorVal5); // Drive each servo one at a time Serial.println(servonum); Serial.println(servonum2); Serial.println(servonum3); Serial.println(servonum4); if (sensorVal == LOW) { pwm.setPWM(servonum, 0, 1200); } else { pwm.setPWM(servonum, 0, 0); } if (sensorVal3 == LOW) { pwm.setPWM(servonum2, 1, 1200); } else { pwm.setPWM(servonum2, 1, 0); } if (sensorVal4 == LOW) { pwm.setPWM(servonum3, 2, 1200); } else { pwm.setPWM(servonum3, 2, 0); } if (sensorVal5 == LOW) { pwm.setPWM(servonum4, 3, 1200); } else { pwm.setPWM(servonum4, 3, 0); }</p><p>}</p></p>

Step 8: Finished Product

Overall, I'm pretty happy with the finished piece. It works well when the cheap servos don't die out, and it makes a satisfying click-clack sound.

Since it's controlled by an Arduino, I was thinking about adding a black decal on the wheel part with a photo sensor lined up with it. That way, I could tell the Arduino what position the wheel is in. With that information, I could program the Arduino to spell out pre-programmed messages, or even make it controllable via Wifi.

Does some brave soul want to make 140 of these and make it write out a Twitter feed???


michail1 (author)2016-09-08

It would be awesome if the 'kit' could be purchased somewhere.

JON-A-TRON (author)michail12016-09-08

That may very well be in the works. What would you pay for a kit?

Elviish (author)JON-A-TRON2017-07-18

Hi Jon-a-tron,

What a great project ! Did you managed to move forward on the kit ? I'm very interested !

JON-A-TRON (author)Elviish2017-07-19

I think I could put a kit together for $200 plus shipping. If you're interested, PM me!

uest (author)JON-A-TRON2017-12-04

I could be interested in buying a much for a kit with 9

thanks and regards

michail1 (author)JON-A-TRON2016-09-08

Not sure.

It's only a toy. A flip clock sells for about $30 on bay. This doesn't have a function other than fun (which I like).

I guess under $100 for complete and built. Maybe $70 for complete kit. $30 for all mechanics. I would be the type of person that would want mechanics only. (But, I would want all 4 wheels with letters.)

uest (author)2017-12-04 are GREAT! In every sense


DanielleC91 (author)2017-06-09

Could you use a 2 channel rf remote control to control 2 split flap boards each with numbers from 0 to 25? I want to make a remote control scoreboard.

JON-A-TRON (author)DanielleC912017-07-12

I don't see why not. This particular design is tricky because it doesn't have a way to keep track of what number is up. You could probably use a black spot on the wheel and a photo sensor to reset a counter on an arduino when you're back at zero, then count the time the motor is spinning to get an estimate of which flap is up. A scoreboard would probably work better with a stepper motor design.

Dazzid_01 (author)2017-04-25

how complex would it be to build a wall of 50x25 of those?

JON-A-TRON (author)Dazzid_012017-04-26

This definitely isn't a design for large numbers like that. All the fussy little pieces would get lost in a big array. You would want a much simpler design for a 50 X 25 array.

JevonC (author)2017-02-17

i have just one question: how should i make sense of laser layout .pdf? as i understand it, the file should perhaps be opened in illustrator or a similar program, thus allowing access to each layer for printing.

however, i wasn't quite able to do that, and opening it in illustrator did not single out the layers. may i know how i can single out layers individually, then?

many thanks!

JON-A-TRON (author)JevonC2017-04-19

Sorry it took so long to reply, missed this one. I just added a PDF and an AI file for the laser cuts. These should be self-explanatory now.

YanirH1 (author)2017-04-18

This is awesome. Nice work! I've been waiting for something like this. Looking forward to building this.

knmbergen (author)2016-09-16

JON-A-TRON, this project is really great! Thank you so much for the amazing documentation, it is really helpful in getting acquainted with all of this technology. One question about something I can't figure out. I seem to have a gap between the servo motor and gear adaptor. Was there an additional piece that connects the two together? In comparing the images in the amazon page to the fusion 360 page it looks like it is a piece that connects to the servo motor. Thanks again for all of this great info!

JON-A-TRON (author)knmbergen2016-11-28

Good call. That piece is pretty simple. If you print out the parts, you'll see that the gear adaptor has a egg shaped hole in the bottom. If you cut off the end of one of the plastic servo arms (they come with the servos), that arm fits in the hole perfectly. You just screw it in with the screws provided and you're done.

kamegami (author)2016-09-27

The obvious application for this is a Lost alarm clock.

JON-A-TRON (author)kamegami2016-11-28

Good idea! Steppers would make that job much easier.

PeterGrund (author)2016-08-28

Quite phenomenal! Not sure I could make this, looks pretty difficult, but one day. :)

RatherBfishing (author)2016-08-11

that is cool

JUANKERR (author)2016-07-14

??? BRB and WTF are not acronyms; an acronym has to be a pronounceable word.

JON-A-TRON (author)JUANKERR2016-07-14

Right you are! I never knew that. They're abbreviations, not acronyms.

jouellet (author)JON-A-TRON2016-07-25

Can't stand these acronyms either ...

The company I work for uses a LOT, I mean a LOT of acronyms....

I was told that on our Extranet, there was some description of all of these. Took me a while to find it.

Filename was "BOA.XLS"....Book Of Acronyms....So basically, you need to know the code, to learn the code !!!

pitty (author)JON-A-TRON2016-07-14

Technically it is an initialism. But because of semantic progression, acronym would also be acceptable now (although this is somewhat debated). Abbreviation could probably also be used but would not be as common.

JON-A-TRON (author)pitty2016-07-15

I always appreciate criticism from the grammar police. You guys help me sounds a bit smarter for the next project!

davidandora (author)2016-07-18

I have a special place in my heart for flip displays and you sir, have done a spectacular job, both with the project and the Instructable. Mighty impressed! Great design choices too. Bravo! This would be my first foray into many of the skills required for this, but you've created something super inspiring. Thanks!

JON-A-TRON (author)davidandora2016-07-18

Thanks for saying so! Can't wait to see your version.

Ds45 (author)2016-07-14

that is posible if we make to be a clock ?

JON-A-TRON (author)Ds452016-07-14

I don't see why not!

Ds45 (author)JON-A-TRON2016-07-14 you have tutorial how to instal that code..i am new with

JON-A-TRON (author)Ds452016-07-15

I'm the wrong guy to ask about that one. First, you'd want to use a stepper motor so you can get precise control, so you'd need to change the design of the 3D model to accommodate that. You'd also need some way to feed back info to the Arduino. The code would be pretty simple I think, and I'm sure someone has made a split flap clock project with an Arduino. Maybe check their site...

Ds45 (author)JON-A-TRON2016-07-17

lol..thanks..for your info dude d^_^b

JON-A-TRON (author)Ds452016-07-15

See Antzy Carmasaic's post below. I think his version would work much better as a clock.

Aleator777 (author)2016-07-15

It lives! Glad to see this beast (aka probably the most pain in the ass assembly ever) in action. Great work man.

JON-A-TRON (author)Aleator7772016-07-15

You'd know all about pain-in-the-ass assemblies DJ!

joshberry (author)2016-07-12

Twitter should commission 140 of these for their headquarters!

JON-A-TRON (author)joshberry2016-07-12

Good idea! Got any contacts there?

Firstly, awesome project and really beautiful design JON-A-TRON. Love your version of these classy devices.

I made a split flap for a client more than 2 years back which had positional feedback. So you just entered the speed and flap number to go to in terminal, and it'll stop at that very flap. The client needed around 500 units and the total cost went very high so unfortunately it didn't work out.

In this video, we were playing a game with the prototype. Another guy would call out a flap number(no audio) which I'll enter in terminal and the exact flap number would come up.

Last month, I started working on a twitter wall with these but to accommodate around 60 characters per box, I needed a bigger unit and so sat down to redesign it. Also it needed to be very modular and utilize laser cutting for most parts, if not all. Now just need someone to fund it. XD

Here's an unfinished version of the new design:

So was curious to see this instructable and very surprised to see joshberry's suggestion for twitter wall here...

this, I'm sure it's going to be amazing. One thing I really love about your design is how thin the walls are on the sides- with a bunch of them together this design would read much better as words than mine would. Did you use stepper motors to make your life easier in terms of registration?

Thank you! Since we originally needed to make an array of these to form different images instead of words, we had to design the bezel as thin as possible.

Yep, I used a stepper motor to precisely rotate the flaps and used a line detector to detect a thin black line on the gears for feedback. The accuracy I got far exceeded my expectations.
If you haven't already seen, check out this guy's blog who has posted extensive information on split-flaps:

Also, cannot help not sharing my favorite split-flap installation:

Seb92 (author)Antzy Carmasaic2016-07-15

Thank you for sharing this!

Man, I wish I'd talked to you before I started making this thing. This is amazing! I went with continuous rotation servos because they're way cheaper than steppers that would do the same job, but in hind sight I think it would have been worth the extra money.

I was thinking of putting a black dot on the wheel and adding a photo sensor on the side- that way I could tell the Arduino where "a" is, for example, then do the math for spin time / speed to get it to give me specific characters. I guess that's what you lines are doing...

That's exactly what I'm doing but it will be pretty difficult to pull off accurately by using a continuous rotation servo, as beside the rotation speed, there will an acceleration and deceleration time component involved. It will be constant if you are flipping multiple flaps and it reaches its max speed, but for flipping 1 or 2 flaps, it will pose some complexity.
A better option is to create a feedback loop similar to a servo's. To get 360 degree feedback, you can implement a diametrically magnetized magnet with sensor as shown in this and this instructables. But that's over-complicating things a bit :)

mikeasaurus (author)2016-07-14

How about one wheel being all emoji's? :)

JON-A-TRON (author)mikeasaurus2016-07-14

Good call. Get on it, Mike.

kenyer (author)2016-07-13

This one is so amazing that I want to vote for this Ible. But... nothing to vote on. Just for you to know that I would have voted for you ;P

JON-A-TRON (author)kenyer2016-07-13

I work for Instructables so I can't win contests, but thanks for the sintement!

kenyer (author)JON-A-TRON2016-07-13

Well, working for Instrutables might also be a good way to get robot-t-shirts I think :)

JON-A-TRON (author)kenyer2016-07-13

All the robot tee-shirts I can eat!

BrittLiv (author)2016-07-13

Your documentation is amazing! I wish I had more time to build my own version. I've just started with your 3D printing class. Great job on that, too! I have worked with quite a few 3D design programs before. Fusion 360 seems to definitely be worth a shot. Thanks a lot for all your awesome work!

About This Instructable




Bio: I'm a full-time Designer at the Instructables Design Studio (best job ever). My background is in residential architecture, film set design, film animatronics, media ... More »
More by JON-A-TRON:Flip-Top CNC TableSheet Metal FireplaceApple Charging Dock
Add instructable to: