During a one week course about physical computing, i.e. Arduino, we had to do a three day project in groups of two. We chose to build a spinning display. It only uses 7 LEDs (we added one more to display special characters like ÄÖÜ). They are mounted on an arm that spins quite fast. We then turn them on and off and a text is readable. In reality it looks better than in the video.
To change the text displayed our board connects to a wifi network and serves a webpage where you can enter the text.
Step 1: Lasercutting
Because we had access to a laser cutter we decided to cut our motor mount and arm out of acrylic. It turned out to be a very good idea because the text was readable even on the opposite site (though not that bright). The shapes are very simple so they could also just be made up by some scrap acrylic and/or wood. We even engraved our names for coolness. The dimensions don't really matter because you can just adjust the timeouts in the code to make it fit the speed.
To attach the motor we used an appropriate plastic gear that we just pushed on the motor shaft and glued to the arm. We used hot glue to join all the acrylic pieces.
Step 2: Circuit
The circuit is very basic, you just have to hook up 7 LEDs to any board. We chose red ones because we read somewhere that they look best in the end.
Our board was a sparkfun esp32 thing, so we have built in wifi, battery charging and an appropriate battery. It was very easy to use and we would use the same board again.
For no special reason we chose to connect all positive LED legs and connect each of the negative legs to a digital I/O pin. This means that you have to set a pin to LOW to turn the LED on and HIGH to turn it off.
It turned out to be a good idea to solder the resistors to the board and use shrink tubing to isolate everything.
Step 3: Code
All of our code can be found on Github.
Our code is inspired by a simple webserver and a similar project without wifi. We just combined everything and added our own bitmasks for the letters. Because we had a power supply to power the motor, we just chose some delay time and dialed in the voltage so the image was stable. It would be a better approach to measure the speed of the arm with some sensor (e.g. hall effect sensor and a magnet below the construction) and adjust the delay in the code, but we didn't do that because of our limited time frame.
Our website basically only consists of some text and an text input that sends the current string on every change so the text updates instantly. After booting up and when the empty string is transmitted we display the IP address so you know where to connect to.
Our website code is included in the Arduino code as a string but it is separately available for clarity.
Step 4: Conclusion
Everything worked out good in the end, we would not change anything. We would really recommend to use acrylic like we did, it was very impressive how the text was just floating in the air.
The only thing we underestimated was the energy of the spinning arm, our construction was so shaky we had to tape it to the table.
The feature that would be nice but we could not realize would be the already mentioned speed measurement. With that it would be possible to control the speed of the text going around the display. We had to use the power supply to do that.