Welcome to Hackster!
Hackster is a community dedicated to learning hardware, from beginner to pro. Join us, it's free!
mdraber
Published © GPL3+

Creating Arduino POV (Presistence of Vision) Display

I have used an old fan and Arduino Nano to create a cool looking POV display!

IntermediateFull instructions provided1,377
Creating Arduino POV (Presistence of Vision) Display

Things used in this project

Hardware components

Resistor 220 ohm
Resistor 220 ohm
×10
Hall Sensor
×1
Arduino Nano R3
Arduino Nano R3
×1
5 mm LED: Red
5 mm LED: Red
×10

Story

Read more

Schematics

POV Display

Code

POV Display -Cat Clipart

Arduino
// Mario's Ideas
// POV Display
// Displaying "cat"clipart
#define LED1 11
#define LED2 12 
#define LED3 10
#define LED4 8
#define LED5 6
#define LED6 4
#define LED7 3
#define LED8 9
#define LED9 7
#define LED10 5
#define Hall 13

int Cat [8] [8] ={
{1,0,0,0,1,0,0,0},
{1,1,1,1,1,0,0,0},
{1,0,1,0,1,0,0,0},
{0,1,1,1,0,0,0,1},
{0,0,1,0,0,0,0,1},
{0,1,1,1,1,0,0,1},
{0,1,1,1,1,1,0,1},
{1,0,1,1,1,1,1,0},
};



void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(LED6, OUTPUT);
pinMode(LED7, OUTPUT);
pinMode(LED8, OUTPUT);
pinMode(LED9, OUTPUT);
pinMode(LED10, OUTPUT);
pinMode(Hall, INPUT);
}

void LightColumn(int L1, int L2 ,int L3, int L4 ,int L5, int L6 ,int L7, int L8 ,int L9, int L10){
  digitalWrite(LED1,L1);
  digitalWrite(LED2,L2);
  digitalWrite(LED3,L3);
  digitalWrite(LED4,L4);
  digitalWrite(LED5,L5);
  digitalWrite(LED6,L6);
  digitalWrite(LED7,L7);
  digitalWrite(LED8,L8);
  digitalWrite(LED9,L9);
  digitalWrite(LED10,L10);
}


void loop() {

if (digitalRead(Hall)==LOW ){
//delay(20);
//  delay(pozycja);
  for (int i=0; i<54;i++){
    LightColumn(Cat[0][i],Cat[1][i],Cat[2][i],Cat[3][i],Cat[4][i],Cat[5][i],Cat[6][i],Cat[7][i],0,0);
    delay(1);
  }
  LightColumn(0,0,0,0,0,0,0,0,0,0);
  
}  
}

POV Display- Displaying sample message

Arduino
// Mario's Ideas
//POV Display
// Displaying sample message
#define LED1 11
#define LED2 12 
#define LED3 10
#define LED4 8
#define LED5 6
#define LED6 4
#define LED7 3
#define LED8 9
#define LED9 7
#define LED10 5
#define Hall 13


int MI [8] [54] ={
 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  {0,1,0,0,0,1,0,0,1,1,0,0,1,1,1,0,0,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0},
  {0,1,1,0,1,1,0,1,0,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0},
  {0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0},
  {0,1,0,0,0,1,0,1,1,1,1,0,1,1,1,0,0,1,0,1,0,0,1,0,0,1,1,0,0,0,0,1,0,1,0,0,1,0,1,1,1,0,1,1,1,1,0,0,1,1,0,0,0,0},
  {0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0},
  {0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1,1,0,0,1,0,0, 1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0},
  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0}
  };

void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(LED6, OUTPUT);
pinMode(LED7, OUTPUT);
pinMode(LED8, OUTPUT);
pinMode(LED9, OUTPUT);
pinMode(LED10, OUTPUT);
pinMode(Hall, INPUT);
}

void LightColumn(int L1, int L2 ,int L3, int L4 ,int L5, int L6 ,int L7, int L8 ,int L9, int L10){
  digitalWrite(LED1,L1);
  digitalWrite(LED2,L2);
  digitalWrite(LED3,L3);
  digitalWrite(LED4,L4);
  digitalWrite(LED5,L5);
  digitalWrite(LED6,L6);
  digitalWrite(LED7,L7);
  digitalWrite(LED8,L8);
  digitalWrite(LED9,L9);
  digitalWrite(LED10,L10);
}


void loop() {

if (digitalRead(Hall)==LOW ){
//delay(20);
//  delay(pozycja);
  for (int i=0; i<54;i++){
    LightColumn(MI[0][i],MI[1][i],MI[2][i],MI[3][i],MI[4][i],MI[5][i],MI[6][i],MI[7][i],0,0);
    delay(1);
  }
  LightColumn(0,0,0,0,0,0,0,0,0,0);

}  
}

POV Display - Space Invaders animation

Arduino
// Mario's Ideas
// POV Display
// Space Invaders Animation

#define LED1 11
#define LED2 12 
#define LED3 10
#define LED4 8
#define LED5 6
#define LED6 4
#define LED7 3
#define LED8 9
#define LED9 7
#define LED10 5
#define Hall 13


int SI [20] [39] ={
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0},
{0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0},
{0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0},
{0,1,1,0,1,1,1,0,1,1,0,0,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,0,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,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1},
{1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0},
{1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,1,0,1,1,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1},
{0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0},
{1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0},
{1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0},
{1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,0,1,1,0,1,1,0,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,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1},
{0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0},
{0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,1,1,0,1,0},
{0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,1,0,1,0,0,1,0,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};

int FrameDuration=0;
int Shift=0;
 
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(LED6, OUTPUT);
pinMode(LED7, OUTPUT);
pinMode(LED8, OUTPUT);
pinMode(LED9, OUTPUT);
pinMode(LED10, OUTPUT);
pinMode(Hall, INPUT);
}

void LightColumn(int L1, int L2 ,int L3, int L4 ,int L5, int L6 ,int L7, int L8 ,int L9, int L10){
  digitalWrite(LED1,L1);
  digitalWrite(LED2,L2);
  digitalWrite(LED3,L3);
  digitalWrite(LED4,L4);
  digitalWrite(LED5,L5);
  digitalWrite(LED6,L6);
  digitalWrite(LED7,L7);
  digitalWrite(LED8,L8);
  digitalWrite(LED9,L9);
  digitalWrite(LED10,L10);
}


void loop() {
  if (digitalRead(Hall)==LOW ){
    for (int i=0; i<39;i++){
      LightColumn(SI[0+Shift][i],SI[1+Shift][i],SI[2+Shift][i],SI[3+Shift][i],SI[4+Shift][i],SI[5+Shift][i],
                  SI[6+Shift][i],SI[7+Shift][i],SI[8+Shift][i], SI[9+Shift][i]);
      delay(1);
    }
    FrameDuration ++;
    if (FrameDuration==6) {
      if (Shift==0) Shift=10; else Shift=0;FrameDuration=0;
    }
  }  
}

Credits

mdraber
50 projects • 73 followers
Contact

Comments

Please log in or sign up to comment.