POV "Angie"

persistence of vision.

by: Angie Krueger


My project basically consists of two arduino boards, a 9 volt battery, 12 LEDs, and 12 resistors, (6 LEDs and 6 resistors per board). When the battery is plugged in the arduino, the 12 LED lights flicker constantly. If the arduino with the 12 LEDs are spun quickly in a circle, the flickering LED lights will spell out, in both red and green, the letters A-N-G-I-E, my name.



I ran into quite a few problems when creating my project, but that was kind of expected, considering I didn't know much about programming. At the beginning of this project, my problem was that I had absolutely no idea what I was doing when it came to programming an arduino. Luckily, I caught on and was able to continue. Another problem I had was trying to build the device that would spin the arduino board with the LEDs. At first, I wasn't sure how to go about building it, but I figured that out as well. Finally, just when I thought my project was nearly finished, I still had to take a picture of it in action for this page. I had to figure out the exact timing in which I could snap a picture so that each letter could be distinguishable. After that, there were really no more problems.


If I had more time/money and I knew more about programming, I would like to somehow enhance the size of the lettering. I think that would be pretty cool. Also, I would like to somehow add a motor to the spinner so it would just spin automatically and ultimately, more easily.


int pins[] = {13,12,11,9,8,7}; // an array of pin numbers

int col_len = 6; // column length

// customizable parameters

int timer1 = 3000; // time between columns

int timer2 = 3000;

int timer3 = 0; // time between drawings

int frame_len = 20; // frame length

int frame_num = 1; // number of frames

// data corresponding to the image to be displayed

int data[] = {1,1,1,1,1,1, 1,0,1,0,0,0, 1,0,1,0,0,0, 1,1,1,1,1,1, 1,1,1,1,1,1, 0,1,0,0,0,0, 0,1,0,0,0,0, 0,1,1,1,1,1, 1,1,1,1,1,1, 1,0,0,0,0,1, 1,0,0,1,0,1, 1,0,0,1,1,1, 1,0,0,0,0,1, 1,1,1,1,1,1, 1,1,1,1,1,1, 1,0,0,0,0,1, 1,1,1,1,1,1, 1,0,1,0,0,1, 1,0,1,0,0,1, 1,0,1,0,0,1};

void setup()


int i;

for (i = 0; i < col_len; i++)

pinMode(pins[i], OUTPUT); // set each pin as an output


void loop()


int a,b,c;

// go through all data for all columns in each frame.

for (a = 0; a < frame_num; a++)


for (b = 0; b < frame_len; b++)


for (c = 0; c < col_len; c++)


if (data[a*frame_len*col_len + b*col_len + c] == 0) {digitalWrite(pins[c], LOW);}

else {digitalWrite(pins[c], HIGH);}




for (c = 0; c < col_len; c++)

{digitalWrite(pins[c], LOW);}