Arduino with 7-Segment Display (LT542)

A 7-segment display is a LED-LCD display with 8 LCD cells are controlled by 8 pins. Usually a 7-segment display has 10 pins, 2 are common pins and the rest 8 control each LCD cell.

Now, a 7-segment display is of 2 types, common cathodic and common anodic display. While the common cathodic display has its common pins hooked up to the ground(GND), the common anodic display has its common pins hooked up to high voltage(+5). A diagram explaining this is given.



I have used a display numbered LT542 which is a common anodic display. This project is aimed to control the LT542 to display each number from 0 to 9 at a second's gap.

MATERIALS REQUIRED:
  • Arduino Uno
  • LT542
  • Jumper wires (male-to-male)
  • Breadboard
STEPS:
  1. Wire the setup as shown in the schematic and pictures.
  2. Copy the code given and paste it into the arduino IDE.
  3. Plug in your board tho the computer using a USB cable.
  4. Upload the code.








CODE: 
/**

  PINOUT DIAGRAM FOR THIS CODE
 

          ______________
         |              |
   a  b  |  c  d        |
   |  |  |  |  |        |
  |+++++++++++++|       |
  |  _________  |       |
  | | _______ | |       |
  | | |     | | |       |
  | | |     | | |       |
  | \ \_____/ / |       |
  |    _____    |       |
  | / /     \ \ |       |
  | | |     | | |       |==============[+5V]
  | | |     | | |       |
  | | |_____| | |       |           [LT542]
  | |_________| |       |        COMMON ANODE
  |             |       |
  |+++++++++++++|       |
   |  |  |  |  |        |
   h  g  |  f  e        |
         |______________|
*/

#define DELAY 5

const int a = 5;
const int b = 6;
const int c = 7;
const int d = 8;
const int h = 9;
const int g = 10;
const int f = 11;
const int e = 12;
int counter = 0;
unsigned long n = 0;
unsigned long currenttime = 0;
unsigned long previoustime = 0;
unsigned long interval = 1000;

void setup() {
 
  //seeting the number to be displayed
  counter = 0;
 
  //setting up the pins for 7 segment display
  pinMode(a,OUTPUT);
  pinMode(b,OUTPUT);
  pinMode(c,OUTPUT);
  pinMode(d,OUTPUT);
  pinMode(e,OUTPUT);
  pinMode(f,OUTPUT);
  pinMode(g,OUTPUT);
  pinMode(h,OUTPUT);

  //initializing the 7 segment pins
  digitalWrite(a,HIGH);
  digitalWrite(b,HIGH);
  digitalWrite(c,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
  digitalWrite(h,HIGH);

  //setting up user display on computer
  Serial.begin(9600);
}

void loop() {
 
  /*code to print all numbers from 0 to 9 on
  a 7 segment display*/
    while(true)
    {
      //resetting counter value
      if(counter == 10)
        counter = 0;
   
      segmentWrite((int)counter);
      Serial.print(n);
      Serial.print("    ");
      Serial.println(counter);
     
      if(currenttime-previoustime>=interval)
      {
         counter++;
         previoustime = currenttime;
         break;
      }
     
    }
}

void segmentWrite(int value)
{
  //Serial.println(value);
  switch(value)
  {
  case 0:
    digitalWrite(a,HIGH);
    digitalWrite(b,LOW);
    digitalWrite(c,LOW);
    digitalWrite(d,LOW);
    digitalWrite(e,HIGH);
    digitalWrite(f,LOW);
    digitalWrite(g,LOW);
    digitalWrite(h,LOW);
    break;
  case 1:
    digitalWrite(a,HIGH);
    digitalWrite(b,LOW);
    digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
    digitalWrite(h,LOW);
    break;
  case 2:
    digitalWrite(a,LOW);
    digitalWrite(b,HIGH);
    digitalWrite(c,LOW);
    digitalWrite(d,LOW);
    digitalWrite(e,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,LOW);
    digitalWrite(h,LOW);
    break;
  case 3:
    digitalWrite(a,LOW);
    digitalWrite(b,HIGH);
    digitalWrite(c,LOW);
    digitalWrite(d,LOW);
    digitalWrite(e,HIGH);
    digitalWrite(f,LOW);
    digitalWrite(g,LOW);
    digitalWrite(h,HIGH);
    break;
  case 4:
    digitalWrite(a,LOW);
    digitalWrite(b,LOW);
    digitalWrite(c,HIGH);
    digitalWrite(d,LOW);
    digitalWrite(e,HIGH);
    digitalWrite(f,LOW);
    digitalWrite(g,HIGH);
    digitalWrite(h,HIGH);
    break;
  case 5:
    digitalWrite(a,LOW);
    digitalWrite(b,LOW);
    digitalWrite(c,LOW);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,LOW);
    digitalWrite(g,LOW);
    digitalWrite(h,HIGH);
    break;
  case 6:
    digitalWrite(a,LOW);
    digitalWrite(b,LOW);
    digitalWrite(c,LOW);
    digitalWrite(d,HIGH);
    digitalWrite(e,HIGH);
    digitalWrite(f,LOW);
    digitalWrite(g,LOW);
    digitalWrite(h,LOW);
    break;
  case 7:
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,LOW);
    digitalWrite(d,LOW);
    digitalWrite(e,HIGH);
    digitalWrite(f,LOW);
    digitalWrite(g,HIGH);
    digitalWrite(h,HIGH);
    break;
  case 8:
    digitalWrite(a,LOW);
    digitalWrite(b,LOW);
    digitalWrite(c,LOW);
    digitalWrite(d,LOW);
    digitalWrite(e,HIGH);
    digitalWrite(f,LOW);
    digitalWrite(g,LOW);
    digitalWrite(h,LOW);
    break;
  case 9:
    digitalWrite(a,LOW);
    digitalWrite(b,LOW);
    digitalWrite(c,LOW);
    digitalWrite(d,LOW);
    digitalWrite(e,HIGH);
    digitalWrite(f,LOW);
    digitalWrite(g,LOW);
    digitalWrite(h,HIGH);
    break;
   
  default:
    Serial.println("NOT VALID");
  }
}

Comments

Popular posts from this blog

Running Oracle Outsidein Technology (OIT) in Docker

NAS (National Achivement Survey) data extraction