Before starting explanation about this project I would like to apologized for low quality image and video , but honestly it is really hard to took a sharp and clear image from running POV with normal camera like my mobile camera. It need very fast diaphragm optical lens to capture true motion, But I will upload the better video when I pass my budget limitation and buy CANON camera
What is the POV
POV stand for Persistence Of Vision Globe which is related to phenomenon of human vision. Light stimulus lingers as an aftereffect on the retina for about 1/10 of a second. When light stimuli are sequenced in rapid succession, they merge into one continuous image. In fact it’s the basis for film and television devices, . POV make such illusion (deceive us) and create the image by rotation the array of LED lights around a single point or axis
How POV works
POV displays, a linear (1-dimensional) array of LED lights rotates around a single point, like a bike wheel. By measuring their rotation rate and controlling their flashes with millisecond precision, we can create the illusion of a 2or 3-dimensional image lingering in thin air. Let’s Consider the single frame of any effect (image , text,…), each frame consist of many pixel and hence many lines in plane or spherical area, POV display this imagewith single line of image which is position changed along with its rotation to fill that image , so the problem is how to precisely control LED pixel color in manner of time and space so it could create whole image
POV are categorized base on axis of rotation, type of effect can display and how much color can create.
- By different axis of rotation, can produce planar, cylindrical and spherical POV display
planar POV
cylindrical POV
spherical POV
- POV can create simple static text effect to 25 fps motion picture
- POV can use simple single-color LED or high speed smart pixels like WS2812 or APA104
in this project 1 meter of 144 APA102 LED strip used to create motion effect and full color image. each image converted to 200 lines of strip by following java code
PImage img,black_b,image_load;
PrintWriter output;
int SQL;
float led_t;
byte[] pov_data;
int line_num=200;
String _OUTPUT="";
void setup()
{
output = createWriter(_OUTPUT);
black_b= createImage(SQL, SQL, RGB);
black_b.loadPixels();
for (int i = 0; i < black_b.pixels.length; i++) { black_b.pixels[i] = color(0, 0, 0); }
black_b.updatePixels();
background(black_b);
img = loadImage("myImage.jpg");
}
int l=0;
void draw()
{
if(l>=line_num) {noLoop();output.flush();output.close();}
background(black_b);
pushMatrix();
imageMode(CENTER);
translate(SQL/2, SQL/2);
rotate(radians(l*360/line_num));
image(img, 0, 0);
popMatrix();
pushMatrix();
for(int i=0;i<144;i++)
{
color c = get(int(i*led_t+led_t/2), int(SQL/2));
output.print((char)red(c)+""+(char)green(c)+""+(char)blue(c));
// print((char)red(c)+""+(char)green(c)+""+(char)blue(c)+";");
fill(c);
rect(i*led_t, (SQL/2)-(led_t/2),led_t,led_t);
}
// println();
popMatrix();
// delay(500);
l++;
}
void keyPressed()
{
output.flush(); // Writes the remaining data to the file
output.close(); // Finishes the file
exit(); // Stops the program
}
void mousePressed(){ loop();}
after files pixelized then is ready to upload to the Wifi Controller. in the controller code each file read as per pre defined scenario and will display in the LED strip line by line . to keep POV display fix, hal sensor has been used to check whether new rotation completed. we can display each frame in the every beginning the rotation. more detail available in the following code
static byte L=0;
File FILe;
static uint8_t * _4kbuffer,LED_BUFFER;
bool StartUpShow=true,SHOW=false,Start_new_round=false;
String IMAGES[30]={};
byte IMAGES_Prior[]={0,1,2,3,4},IMAGE_NUM=0;
int DURATION[]={5,5,5,5,5};
const int IMAGES_LINES=200;
static int image_index=0, Current_imageLine=0;
volatile uint32_t t_start_round=0,t_stop_round=0,OpenlastTime=0,lastLineShow=...
Read more »