Arduino projects

Arduino Rotating LED Display

Arduino Rotating LED Display

Arduino Rotating LED Display is one of the best and easy project you can do with Arduino. POV stands for Perception of Vision i.e. it is just an illusion made by LEDs that are rotated in circular or oscillatory fashion so that it seems to us that letters are appearing in the air out of a rotating disc/bar on which LEDs are mounted.

 

There are many tutorials available on POVs made using Arduino but this is the easiest of them to follow and make. Here the things are explained in the easiest possible way.

Components Required:

  • Arduino Nano ( you can use any Arduino, for small size we have used Nano )
  • 7 LEDs ( you can use any colored Led but RED is recommended )
  • 330 ohm resistors (7 pcs.)
  • DC Geared Motor ( 300rpm or above)
  • Jumper Wires/ Hookup Wires
  • IR Led and Photodiode
  • Battery

Working Principle:

Initially LED’s of first column blinks, and next time that of second column and so on. Accordingly In the code, delay of some milliseconds needs to be applied between the blinking of two columns, and in this case it is one millisecond but you can vary it as per your motor speed and other variables.

Blinking of all columns one by one makes an illusion of a complete alphabet thus in this way a whole word is made to appear. Speed of motor needs to be high enough so that our eyes cannot feel the blinking effect of LED’s.

In the circuit, a pair of IR LED and Photodiode is used as an interrupt. When this pair move over the white strip it signals the Arduino that it has reached the starting position and LED’s starts blinking according to the text. So in this way LED’s blinks in the same pattern all the time after this interrupt point and we can see the text displayed on it.

 

Circuit Diagram:

I made the circuit PCB design on fritzing and exported the gerber file for making a industrial grade PCB from JLCPCB at a very cheap price of just 2$/10pcs with shipping extra.

Fritzing file : Download

Gerber Zip file : Download

I ordered the custom PCB from JLCPCB at a very cheap price of just 2$/10pcs with shipping extra.

Get your 10pcbs for 2$ now at https://jlcpcb.com

Code:

int InterruptPin=A0;                   // Our interrupt sensor i.e. Photodiode/IR  is connected to Pin A0
int LED1 =4;                           // Initialising pins for LEDs
int LED2 =5;                           
int LED3 =6;                           
int LED4 =7;                           
int LED5 =8;                           
int LED6 =9;                            
int LED7 =13;                          

void setup(){
  pinMode(LED1,OUTPUT);               // Setting all the LEDs pins as OUTPUT
  pinMode(LED2,OUTPUT);
  pinMode(LED3,OUTPUT);
  pinMode(LED4,OUTPUT);
  pinMode(LED5,OUTPUT);
  pinMode(LED6,OUTPUT);
  pinMode(LED7,OUTPUT);
}

void loop(){
    int val=analogRead(InterruptPin);  // Reading the value from PhotoDiode / IR Sensor
      if(val > 200){                   // Displaying the Text ( as an Example I Love India )     

            Sp();
            R();Sp();
            O();Sp();
            B();Sp();
            O();Sp();
            S();Sp();
            H();Sp();
            A();Sp();
            L();Sp();
            A();Sp();
           
      }
     }

void A(){                                            //Alphabet A
  signal(0,1,1,1,1,1,1);                             // 1st Column
  signal(1,0,0,1,0,0,0);                             // 2nd Column   
  signal(1,0,0,1,0,0,0);                             // 3rd Column
  signal(1,0,0,1,0,0,0);                             // 4th Column
  signal(0,1,1,1,1,1,1);                             // 5th column
}

void B(){
  signal(1,1,1,1,1,1,1);
  signal(1,0,0,1,0,0,1);
  signal(1,0,0,1,0,0,1);
  signal(1,0,0,1,0,0,1);
  signal(0,1,1,1,1,1,0);  
}

void C(){
  signal(0,1,1,1,1,1,0);
  signal(1,0,0,0,0,0,1);
  signal(1,0,0,0,0,0,1);
  signal(1,0,0,0,0,0,1);
  signal(0,1,0,0,0,1,0);
}

void D(){
  signal(1,1,1,1,1,1,1);
  signal(1,0,0,0,0,0,1);
  signal(1,0,0,0,0,0,1);
  signal(1,0,0,0,0,0,1);
  signal(0,1,1,1,1,1,0);
}

void E(){
  signal(1,1,1,1,1,1,1);
  signal(1,0,0,1,0,0,1);
  signal(1,0,0,1,0,0,1);
  signal(1,0,0,1,0,0,1);
  signal(1,0,0,0,0,0,1);
}

void Ff(){
  signal(1,1,1,1,1,1,1);
  signal(1,0,0,1,0,0,0);
  signal(1,0,0,1,0,0,0);
  signal(1,0,0,1,0,0,0);
  signal(1,0,0,0,0,0,0);
}

void G(){
  signal(0,1,1,1,1,1,0);
  signal(1,0,0,0,0,0,1);
  signal(1,0,0,0,1,0,1);
  signal(1,0,0,0,1,0,1);
  signal(0,1,0,0,1,1,1);
}

void H(){
  signal(1,1,1,1,1,1,1);
  signal(0,0,0,1,0,0,0);
  signal(0,0,0,1,0,0,0);
  signal(0,0,0,1,0,0,0);
  signal(1,1,1,1,1,1,1);
}

void I(){
  signal(1,0,0,0,0,0,1);
  signal(1,1,1,1,1,1,1);  
  signal(1,0,0,0,0,0,1);
}

void J(){
  signal(0,0,0,0,0,1,0);
  signal(0,0,0,0,0,0,1);
  signal(0,0,0,0,0,0,1);
  signal(0,0,0,0,0,0,1);
  signal(1,1,1,1,1,1,0);    
}

void K(){
  signal(1,1,1,1,1,1,1);
  signal(0,0,0,1,0,0,0);
  signal(0,0,1,0,1,0,0);
  signal(0,1,0,0,0,1,0);
  signal(0,0,0,0,0,0,1);
}

void L(){
  signal(1,1,1,1,1,1,1);
  signal(0,0,0,0,0,0,1);
  signal(0,0,0,0,0,0,1);
  signal(0,0,0,0,0,0,1);
  signal(0,0,0,0,0,0,1);
}

void M(){
  signal(1,1,1,1,1,1,1);
  signal(0,1,0,0,0,0,0);
  signal(0,0,1,0,0,0,0);
  signal(0,0,0,1,0,0,0);
  signal(0,0,1,0,0,0,0);
  signal(0,1,0,0,0,0,0);
  signal(1,1,1,1,1,1,1);
}

void N(){
  signal(1,1,1,1,1,1,1);
  signal(0,0,1,0,0,0,0);
  signal(0,0,0,1,0,0,0);
  signal(0,0,0,0,1,0,0);
  signal(1,1,1,1,1,1,1);
}

void O(){
  signal(0,1,1,1,1,1,0);
  signal(1,0,0,0,0,0,1);
  signal(1,0,0,0,0,0,1);
  signal(1,0,0,0,0,0,1);
  signal(0,1,1,1,1,1,0);
}

void P(){
  signal(1,1,1,1,1,1,1);
  signal(1,0,0,1,0,0,0);
  signal(1,0,0,1,0,0,0);
  signal(0,1,1,0,0,0,0);
}

void Q(){
  signal(0,1,1,1,1,1,0);
  signal(1,0,0,0,0,0,1);
  signal(1,0,0,0,1,0,1);
  signal(1,0,0,0,0,1,0);
  signal(0,1,1,1,1,0,1);
}

void R(){
  signal(1,1,1,1,1,1,1);
  signal(1,0,0,1,0,0,0);
  signal(1,0,0,1,1,0,0);
  signal(1,0,0,1,0,1,0);
  signal(0,1,1,0,0,0,1);
}

void S(){
  signal(0,1,1,0,0,0,1);
  signal(1,0,0,1,0,0,1);
  signal(1,0,0,1,0,0,1);
  signal(1,0,0,1,0,0,1);
  signal(1,0,0,0,1,1,0);
}

void T(){
  signal(1,0,0,0,0,0,0);
  signal(1,0,0,0,0,0,0);
  signal(1,1,1,1,1,1,1);
  signal(1,0,0,0,0,0,0);
  signal(1,0,0,0,0,0,0);
}

void U(){
  signal(1,1,1,1,1,1,0);
  signal(0,0,0,0,0,0,1);
  signal(0,0,0,0,0,0,1);
  signal(0,0,0,0,0,0,1);
  signal(1,1,1,1,1,1,0);
}

void V(){
  signal(1,1,1,0,0,0,0);
  signal(0,0,0,1,1,0,0);
  signal(0,0,0,0,0,1,1);
  signal(0,0,1,1,0,0,0);
  signal(1,1,1,0,0,0,0);
}  

void W(){
  signal(1,1,1,1,1,1,1);
  signal(0,0,0,0,0,1,0);
  signal(0,0,0,1,1,0,0);
  signal(0,0,0,0,0,1,0);
  signal(1,1,1,1,1,1,1);
}

void X(){
  signal(1,1,0,0,0,1,1);
  signal(0,0,1,0,1,0,0);
  signal(0,0,0,1,0,0,0);
  signal(0,0,1,0,1,0,0);
  signal(1,1,0,0,0,1,1);
}

void Y(){
  signal(1,1,0,0,0,0,0);
  signal(0,0,1,0,0,0,0);
  signal(0,0,0,1,1,1,1);
  signal(0,0,1,0,0,0,0);
  signal(1,1,0,0,0,0,0);
}

void Z(){
  signal(1,0,0,0,0,1,1);
  signal(1,0,0,0,1,0,1);
  signal(1,0,0,1,0,0,1);
  signal(1,0,1,0,0,0,1);
  signal(1,1,0,0,0,0,1);
}

void Sp(){
  signal(0,0,0,0,0,0,0);
  signal(0,0,0,0,0,0,0);
  signal(0,0,0,0,0,0,0);
  signal(0,0,0,0,0,0,0);
  signal(0,0,0,0,0,0,0);
}

void signal(int D1,int D2,int D3,int D4,int D5,int D6,int D7){
  
  if (D1==1) {digitalWrite(LED1,HIGH);}   else {digitalWrite(LED1,LOW);}
  if (D2==1) {digitalWrite(LED2,HIGH);}   else {digitalWrite(LED2,LOW);}
  if (D3==1) {digitalWrite(LED3,HIGH);}   else {digitalWrite(LED3,LOW);}
  if (D4==1) {digitalWrite(LED4,HIGH);}   else {digitalWrite(LED4,LOW);}
  if (D5==1) {digitalWrite(LED5,HIGH);}   else {digitalWrite(LED5,LOW);}
  if (D6==1) {digitalWrite(LED6,HIGH);}   else {digitalWrite(LED6,LOW);}
  if (D7==1) {digitalWrite(LED7,HIGH);}   else {digitalWrite(LED7,LOW);}
  
  delay(1);                            // You need to change this according to Motor's Speed.
  
}

 

Code : Download

Show More

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button
Close