This project refers to an Arduino sketch which implements a POV (Persistence Of Vision) case for the representation of text messages which can contain the visible characters of the character set ASCII.

As for the material part, such a POV implementation usually requires: an Arduino, 7 LEDs (depending on the height [in bits] of the characters), a DC motor, a spiral base that rotates (on which the Arduino, the LEDs and the battery powering the Arduino will be) by the moving motor, a base where to fix the DC motor steadily upon, and some essential components such as e.g. resistors, wires, diodes, transistors.

This implementation, however, was applied to a home fan so some of these components have been unnecessary. Of course, the adjustment of the Arduino with the propeller fan was not easy because there were many problems of imbalance. These problems were solved with artificial weights to balance the construction.

Regarding the software part of the implementation, each visible character is a specific bitmap of 35 bits (7×5). All these characters have a height of 7 bits (as many as the LEDs in the system) and a width of 5 bits (i.e. each character consists of 5 columns of 7 bits each [7×5 = 35 bits the map of each character]).

In order to properly display a message (having the above data structure) there is need of an algorithm which handles the characters of the message one by one and, for each one of them, displays the individual columns with a specific delay in the 7 LEDs of the system. At the end of each character (when the entire character bitmap has appeared in the 7 LEDs), then we display a blank column (we actually display the blank space character) so that the next character to be a space away from the previous one.

During the appearance of one character column we use an algorithm known as “Walking 1’s” (this algorithm is often used for error checking in integrated memory circuits). This algorithm is iterative and in this case used to obtain each bit separately from the column of the current character to achieve the renewal of the value of the appropriate LED. The advantage of this algorithm is that it performs well as regards the time complexity (it works with binary arithmetic and boolean operators).

For more information you can get the project itself:


“Love!” example: