Persistence of vision is the optical phenomenon in which the illusion of motion is created because the human brain – which can only process 10–12 frames per second – interprets a rapid sequence of still pictures as a continuous moving image. It’s the basis of how animation works, as well as film and TV in general.

By rotating a strip of LEDs at high speed and syncing their blinking patterns, it’s possible to create the illusion of a still or moving image. This is just what Japan-based family team of makers HomeMadeGarbage have done for their POV Display, even spinning a Raspberry Pi Pico around with the LED strips.

Power of PIO

The makers tell us that, after creating a similar project using Sony’s considerably more expensive Spresense board, they were inspired to try it with Pico, as they were “very surprised at the parallel high-speed operation of PIO.” The latter is the unique Programmable Input/Output feature of Pico’s RP2040 chip that enables the use of custom communication protocols in addition to the built-in I2C and SPI. This offers a faster way of outputting bit-banged data (even video) to non-standard devices with a deeper level of control, without tying up the main processor.

Mounted on the other end of the rotating arm, Raspberry Pi Pico controls the LEDs

The POV Display uses two different PIO state machines (from the eight available on the chip) to control, in parallel, a pair of super-bright 24-LED APA102 (aka DotStar) strips on its rotating arm. The arm is spun at high speed by a Mabuchi RS-540SH motor, as commonly used in remote-control cars.

Each rotation is detected using a reflectance sensor on the arm and a small white marker underneath. HomeMadeGarbage say that they improved detection reliability by inserting “a filter and a Schmitt trigger between the reflectance sensor and Pico to prevent chattering.”

 When the arm is spun rapidly, the LEDs are blinked rapidly in a pattern

In the software, written in C, the time taken for one rotation is divided by 1000 to sync the blinking of LED patterns stored in a graphics array. “In order to leave a beautiful afterimage, a speed of ten revolutions or more per second is required,” reveal HomeMadeGarbage. 

Discovering that “the I/O of Raspberry Pi Pico can run very fast”, they’ve managed to spin the arm at up to 960rpm while displaying an image at 1000 frames per rotation.

Spinning around

With everything, including Raspberry Pi Pico, whizzing around at high speed, you may well be wondering how it’s powered without quickly causing a tangle of wires. The solution is the use of a wireless charging module, one of whose circular coils sits on top of the motor, the other in the underside of the arm centre. “5V is supplied to the transmitting side of the wireless charging module, and the receiving side receives the voltage, [which] drives Pico, sensor, and LEDs.”

After posting a video of the POV Display in action, HomeMadeGarbage found that people were “surprised at the high-speed operation.” They now plan to make an improved version with a narrower-pitch LED bar. Also on the cards is a 3D POV Display using Pico – we can’t wait to see that!

From The MagPi store