*Digit 7 Segment Display Arduino code

*Digit 7 Segment  Display Arduino code - The seven segment display is a pretty simple device.  It is actually 8 LEDs (the decimal point is the 8th). It can be arranged so that different combinations can be used to make numerical digits.  This tutorial will show you how to wire one up and drive it with an Arduino.

Instructions:
If this is your first Arduino project, first go through our “Arduino: Getting Started” and “Beginning Solderless Breadboards” tutorials.

Use our LED resistor calculator to calculate the resistor value that won't destroy your LED!  Connecting these LEDs directly to Arduino IO pins will eventually burn them out!  Connect LED pins 3 and 8 to GND.  Use a resistor between each of the other connections to your Arduino.


Here are the pin mappings of the display, note that common anode displays will have reversed wiring:


Use your solderless breadboard to make the connections between the seven segment LED and your Arduino board:

Arduino Pin7 Segment Pin Connection
 27 (A)
 36 (B)
 44 (C)
 52 (D)
 61 (E)
 79 (F)
 8  10 (G)
 9 5 (DP)

Code :
 This Arduino software example counts down from 9 to 0.  This is a nice, compact version that uses a 2 dimensional array to hold the LED bit patterns, and "for" loops to get things done.  If you want a longer, more verbose method, scroll down for that.
// Arduino 7 segment display example software
// http://www.hacktronics.com/Tutorials/arduino-and-7-segment-led.html
// License: http://www.opensource.org/licenses/mit-license.php (Go crazy)

// Define the LED digit patters, from 0 - 9
// Note that these patterns are for common cathode displays
// For common anode displays, change the 1's to 0's and 0's to 1's
// 1 = LED on, 0 = LED off, in this order:
//                                    Arduino pin: 2,3,4,5,6,7,8
byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 },  // = 0
                                                           { 0,1,1,0,0,0,0 },  // = 1
                                                           { 1,1,0,1,1,0,1 },  // = 2
                                                           { 1,1,1,1,0,0,1 },  // = 3
                                                           { 0,1,1,0,0,1,1 },  // = 4
                                                           { 1,0,1,1,0,1,1 },  // = 5
                                                           { 1,0,1,1,1,1,1 },  // = 6
                                                           { 1,1,1,0,0,0,0 },  // = 7
                                                           { 1,1,1,1,1,1,1 },  // = 8
                                                           { 1,1,1,0,0,1,1 }   // = 9
                                                         };
void setup() {              
  pinMode(2, OUTPUT);  
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  writeDot(0);  // start with the "dot" off
}
void writeDot(byte dot) {
  digitalWrite(9, dot);
}
   
void sevenSegWrite(byte digit) {
  byte pin = 2;
  for (byte segCount = 0; segCount < 7; ++segCount) {
    digitalWrite(pin, seven_seg_digits[digit][segCount]);
    ++pin;
  }
}
void loop() {
  for (byte count = 10; count > 0; --count) {
   delay(1000);
   sevenSegWrite(count - 1);
  }
  delay(4000);
}
 
Back To Top