Jonggi Hong, Sriram Karthik Badam



FlashGear is a hand-cranked LED display device. It is inspired by the vintage projectors that work by rotating a crank. FlashGear has two LED strips and a gyro sensor connected to two gears that can be rotated with a handle. When rotated, this device can flash color images (of small resolutions).

FlashGear uses the gyro to read the orientation of the rotating head and figure out the pixel co-ordinates in a target image that need to be displayed by using a simple trigonometric transform. In our implementation, we also created a time-based version where a different part of the image is shown at each time step (instead of a rotation step).

Materials and Parts

The FlashGear was made with the following parts:
Total Cost
Arduino Uno
The main component interfacing the sensors to the computer
9 Degrees of Freedom - Sensor Stick
It includes an accelerometer, a magnetometer, and a gyro. We used it to sense orientation (using gyro).
LED Strip
Attached to a rotating fan and used as the main display
Slip Ring
To allow free rotation of the gears without rotating the Arduino.
Lego bricks used to build the FlashGear prototype
Wiring, and other components
Used to hook everything up






Our initial algorithm for FlashGear was quite simple. It involved figuring out the orientation of the rotating head (say Θ w.r.t the horizontal dimension), find all the pixels along Θ and π + Θ from the center of the target image, and just assign these pixels to the corresponding LEDs on the strip. The assumption here is that we can rotate the handle fast enough to see the entire image. However, we faced three challenges while building FlashGear:
  1. The Gyro on the 9DOF sensor gives the raw and pitch along its rotating direction. While this is not a major challenge, translating the pitch and raw of the gyro to orientation Θ was the first issue we tackled.
  2. We observed that the 9DOF sensor does not provide readings frequently enough. It can work at almost 50 frames/sec (and, if needed, higher by tweaking the clock frequency in I2C protocol). If our rotational speed is 5 rotations/sec (at average) we eventually get 50/5 = 10 image frames/sec; since one full rotation essentially means flashing the entire image once. In our case, this low rate leads to rotating frames as observed in the demo video (for the chrome, eight, and + patterns).
  3. The physical prototype being low-tech was made with Lego parts-- bricks, gears, and handle. Due to this, the build was not very sturdy and the handle connected to the gears rotates a bit slowly.

Since there was a mismatch in the readings from the gryoscope and the actual orientation of the head, we created a time-based version of Flash Gear which just chooses a different segment of the image at every pre-defined time step. Now, as long as you are rotating at a constant speed, the flashed image will appear stationary (partly answers challenge 2).

Future Work Ideas

We were very inspired by Smart Rope, and we wanted to make something that displays any image. Creating a windmill like design for FlashGear was only for fun. Given enough time,
  • We want to make it interactive with a proximity sensor and implement features to move objects displayed by FlashGear (imagine moving a ball shown in the rotating FlashGear display)
  • The 9DOF sensor features an accelerometer, gyroscope, and a magnetometer. We only used the gyroscope. It would be interesting to think about a potential use for the other sensors.
  • We initially imagined FlashGear to be like a flip book that can flash animations as we rotate the handle. Unfortunately, the limitations of the gyroscope (and our algorithm) restricted us from doing this. We feel that showing an animation will be a very cool demo.


We enjoyed working on this project. Our goal from the start was to have fun and working with Lego is definitely fun. Our only regret is that we could not make a flip book style animation with FlashGear at its current stage.


Code for using Sparkfun 9DOF sensor stick
Smart Rope