Hardware components | ||||||
![]() |
| × | 10 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 10 |
I recently found an old fan in ma garage and thought it was perfect opportunity to create Persistence of Vision Display.
I think this project came out great.
The whole tutorial can be found here:
If you like this content and you want to support me in creating similar videos go to my Patreon webpage
https://www.patreon.com/MariosIdeas
Or
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7PD67JWZ9S3EJ&source=url
// 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);
}
}
// 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);
}
}
// 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;
}
}
}
Comments
Please log in or sign up to comment.