ashish_8284
Published

POV Fan Display Making

I have made this project using an old CD player's DC motor, Arduino Pro Mini, LED, a Hall sensor, and some other electronic components.

BeginnerFull instructions provided20 hours10,522
POV Fan Display Making

Things used in this project

Hardware components

Arduino Pro Mini 328 - 5V/16MHz
SparkFun Arduino Pro Mini 328 - 5V/16MHz
×1
LED (generic)
LED (generic)
×1
Resistor 221 ohm
Resistor 221 ohm
×1
Hall Effect Sensor
Hall Effect Sensor
×1
Slide Switch
Slide Switch
×1
DC motor (generic)
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

POV fan.fzz

Schematic of POV fan.
i have used bread bord in schematic. in real all wiring are made directly to shrink project so that it can fixed on scale and rotate easily,

Code

POV fan

Arduino
This code work with 5 LED POV display.
int timer = 900; //LED ON TIMING FOR ONE COLUM    
int HALL_SENS = 2; // HALL SENSOR INPUT PIN
int State = 0; // HALL SENSOR SENSED FLAG         
int lastState = 0; // HALL SENSOR SENSED FLAG LAST SCAN
long count; //TIME COUNTER FOR CHANGIING DISPLAY PRINTING
boolean space[]={0,0,0,0,0};   // SINGLE SPACE BAR
boolean A[]={1,1,1,1,1,0,0,1,0,1,1,1,1,1,1};//BIT MAP FOR A
boolean B[]={1,1,1,1,1,1,0,1,0,1,1,1,1,1,1};//BIT MAP FOR B
boolean C[]={1,1,1,1,1,1,0,0,0,1,1,0,0,0,1};//BIT MAP FOR C
boolean D[]={1,1,1,1,1,1,0,0,0,1,0,1,1,1,0};//BIT MAP FOR D
boolean E[]={1,1,1,1,1,1,0,1,0,1,1,0,1,0,1};//BIT MAP FOR E
boolean F[]={1,1,1,1,1,0,0,1,0,1,0,0,1,0,1};//BIT MAP FOR F
boolean G[]={1,1,1,1,1,1,0,0,0,1,1,0,1,0,1,1,1,1,0,1};//BIT MAP FOR G
boolean H[]={1,1,1,1,1,0,0,1,0,0,1,1,1,1,1};//BIT MAP FOR H
boolean I[]={1,0,0,0,1,1,1,1,1,1,1,0,0,0,1};//BIT MAP FOR I
boolean J[]={1,1,0,0,0,1,0,0,0,0,1,1,1,1,1};//BIT MAP FOR J
boolean K[]={1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1};//BIT MAP FOR K
boolean L[]={1,1,1,1,1,1,0,0,0,0,1,0,0,0,0};//BIT MAP FOR L
boolean M[]={1,1,1,1,1,0,0,0,1,0,0,1,1,0,0,0,0,0,1,0,1,1,1,1,1};//BIT MAP FOR M
boolean N[]={1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1};//BIT MAP FOR N
boolean O[]={1,1,1,1,1,1,0,0,0,1,1,1,1,1,1};//BIT MAP FOR O
boolean P[]={1,1,1,1,1,0,0,1,0,1,0,0,1,1,1};//BIT MAP FOR P
boolean Q[]={1,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0};//BIT MAP FOR Q
boolean R[]={1,1,1,1,1,0,1,1,0,1,1,0,1,1,1};//BIT MAP FOR R
boolean S[]={1,0,1,1,1,1,0,1,0,1,1,1,1,0,1};//BIT MAP FOR S
boolean T[]={0,0,0,0,1,1,1,1,1,1,0,0,0,0,1};//BIT MAP FOR T
boolean U[]={1,1,1,1,1,1,0,0,0,0,1,1,1,1,1};//BIT MAP FOR U
boolean V[]={0,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,1,1};//BIT MAP FOR V
boolean W[]={1,1,1,1,1,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,1,1,1,1,1};//BIT MAP FOR W
boolean X[]={1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1};//BIT MAP FOR X
boolean Y[]={0,0,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1};//BIT MAP FOR Y
boolean Z[]={1,1,0,0,1,1,0,1,0,1,1,0,0,1,1};//BIT MAP FOR Z
boolean exclamationmark[]={1,0,1,1,1,1,0,1,1,1};//BIT MAP FOR !
int m;//MARKER MEMORY FOR CHARECTER PRINTING LOOP
void setup() {// SETUP FOR INITIALISE SERIAL PORT AND DEFINE INPUT & OUTPUTS
  Serial.begin(115200);
  for (int Pin = 3; Pin <=7; Pin++) {
    pinMode(Pin, OUTPUT);
    digitalWrite(Pin,LOW);}
    pinMode(HALL_SENS, INPUT_PULLUP);}
void loop() {// MAIN LOOP 
State = digitalRead(HALL_SENS);
if (State != lastState){
  if (State == LOW) {
if(count >= 0 & count < 20001){//Ashish
                    WriteLetter3Width(A);
                    WriteLetter1Width(space);
                    WriteLetter3Width(S);
                    WriteLetter1Width(space);
                    WriteLetter3Width(H);
                    WriteLetter1Width(space);
                    WriteLetter3Width(I);
                    WriteLetter1Width(space);
                    WriteLetter3Width(S);
                    WriteLetter1Width(space);
                    WriteLetter3Width(H);
                    WriteLetter1Width(space);
                    WriteLetter3Width(I);
                    WriteLetter1Width(space);
                    WriteLetter3Width(S);
                    WriteLetter2Width(exclamationmark);
                    WriteLetter1Width(space);

                    }
if(count > 20001 & count < 40001 ){//Great
                    WriteLetter4Width(G);
                    WriteLetter1Width(space);
                    WriteLetter3Width(R);
                    WriteLetter1Width(space);
                    WriteLetter3Width(E);
                    WriteLetter1Width(space);
                    WriteLetter3Width(A);
                    WriteLetter1Width(space);
                    WriteLetter3Width(T);
                    WriteLetter1Width(space);
                    WriteLetter2Width(exclamationmark);
                    WriteLetter1Width(space);}}
lastState = State;}
count++;
if(count > 40001) {count = 0;}}
void WriteLetter5Width(boolean letter[]){// FUNCTION FOR 5 WIDTH CHARECTERS M,N,Q,V,W,X,Y
  m=0;
  for (int n=0; n<=4; n++){
  for (int Pin = 7; Pin >=3; Pin--) {
    digitalWrite(Pin, letter[m]);
    m=m+1;}
    delayMicroseconds(timer);}}
void WriteLetter4Width(boolean letter[]){// FUNCTION FOR 4 WIDTH CHARECTERS G,K
  m=0;
  for (int n=0; n<=3; n++){
  for (int Pin = 7; Pin >=3; Pin--) {
    digitalWrite(Pin, letter[m]);
    m=m+1;}
    delayMicroseconds(timer);}}
void WriteLetter3Width(boolean letter[]){// FUNCTION FOR 3 WIDTH CHARECTERS A,B,C,D,E,F,H,I,J,L,O,P,R,S,T,U,V,Z
  m=0;
  for (int n=0; n<=2; n++){
  for (int Pin = 7; Pin >=3; Pin--) {
    digitalWrite(Pin, letter[m]);
    m=m+1;}
    delayMicroseconds(timer);}}
void WriteLetter2Width(boolean letter[]){// FUNCTION FOR 2 WIDGH CHARECTERS !
  m=0;
  for (int n=0; n<=1; n++){
  for (int Pin = 7; Pin >=3; Pin--) {
    digitalWrite(Pin, letter[m]);
    m=m+1;}
    delayMicroseconds(timer);}}
void WriteLetter1Width(boolean letter[]){// FUNCTION FOR SINGLE WIDHT CHARECTERS "SPACE BAR"
  m=0;
   for (int Pin = 7; Pin >=3; Pin--) {
    digitalWrite(Pin, space[m]);
    m=m+1;}
    delayMicroseconds(timer);}

Credits

ashish_8284

ashish_8284

10 projects • 34 followers

Comments