There are a lot of POV (Persistence of Vision) projects nice and completely open source that could be found in the Web. The POV is an optical illusion due to our eyes that allow to see two lights turned on, when they are not turned on at the same time. This happens because the light is very fast respect to our retina response/perception.
The POV effect has been used initially as the Magic Wand projects (thanks to them for the idea and some resources). These tools could be used moving them very fast in the air allowing to some predefined images or text to compare.
Another POV‘s application is the rotating clock, a string of LEDs that turns in circle showing the current time.
Applying the same reasoning to a bicycle wheel it is possible to show nice writings or pictures when riding a bike, instead of moving your arm.
There are many example of this kind of application some of them are professional ones like the Lady Ada SpokePOV.
One of the last and more innovative usage of the POV effect will be used in the Tokyo Metro to show some advertisments during each travel (in this case people moves while LEDs are static!).
Unforunately the more complex the showed images are the more complex will be the circuit and the program used to show writings.
In the Bike use case, each POV uses a Hall Effect sensor to detect the rotating speed and decide how much time each led must be turned on!
In this case I decided to create a very simple POV using only some LEDS (8 smaller SMD LEDs in this case) and an Attiny2313 as microcontroller that turn on and off very fast the LEDs.
Obviously in this case there will not be any hall sensor effect (for now) and the writings are statically flashed in the EEPROM.
The circuit schematics is ultra simple and essential. The 8 LEDs are connected from the 1 to the 8 pin of the Attiny2313. This pins corresponds to the 0-7 digital output pins (declaring them as it).
I extract and converted the matrix rapresentation for each symbol (numbers, punctuation, lower/upper characters) from the one provided by the Magic Wand project. In particular a 8 by 6 matrix has been defined for each symbol, setting each matrix’s entry to 1 or 0, as defined also here in order to not waste memory space.
So given a string containing a sequence of symbols, the sketch has to:
- scan each symbol of the sequence;
- convert it in a set of ordered columns (from left to right);
- for each column get the status of each element in a different row and turn on/off the correspondent LED;
- keep the LEDs in the current status for some delay;
- when all columns has been considered, turn off all LEDs and wait some delay in order to create a blank space between two consecutive characters;
- repeat these steps for each symbol in the sequence.
The conversion in the step 2 is provided by the matrix definition of each symbol. All definitions has been inserted in a switch construct that allow to return the correct matrix representation for the provided symbol.
NB: unfortunately there is a big problem introduced by Integreted Circuit’s usage. It is the memory size! There is not enough memory in the Attiny2313 that I used….I hope to find some (valid) solution (without removing no symbol, TIPS & TRICKS will be appreciated so much!!!).
The entire code used is contained in this file: POV_writer.ino.
The needed hardware will be a simple piece of wood, connected to a DC motor in one vertex and the programmed Arduino with the set of LEDs and a battery on the other side.
Because there is no Hall Effect sensor, or any other device that allows to know which is the rotation speed, I have to make some tries to find the correct speed using a potentiometer connected to the DC motor power supply.
The result is not very precise but it has been developed really low cost!!!.