Mike Kushnerik
Published © CC BY-NC-SA

Large 7-Segment Displays

Have you always had trouble reading super tiny 7-segment displays? Try this project on for size!

IntermediateFull instructions provided3 hours6

Things used in this project

Hardware components

SparkFun 7-Segment Display - 6.5" (Red)
×1
SparkFun Large Digit Driver
SparkFun Large Digit Driver
×1
Arduino UNO
Arduino UNO
×1

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)

Story

Read more

Custom parts and enclosures

Large 7-Segment Housing

Sketchfab still processing.

SparkFun 7-Segment Display - 6.5"

Arduino UNO Bracket

Sketchfab still processing.

Arduino Nano Screw Terminal Bracket

Sketchfab still processing.

Schematics

SparkFun Hookup Guide

Code

large_seven_segment_test_v1.ino

Arduino
// SparkFun Large Digit Display driver test program
// 10/25/2025
// Author: miekush

#include <SPI.h>

//pins
#define CS_PIN      10

//display segments
#define A_SEGMENT   1<<0
#define B_SEGMENT   1<<6
#define C_SEGMENT   1<<5
#define D_SEGMENT   1<<4
#define E_SEGMENT   1<<3
#define F_SEGMENT   1<<1
#define G_SEGMENT   1<<2
#define DP_SEGMENT  1<<7

uint8_t count=0;

uint8_t displayMap[10]=
{
  A_SEGMENT|B_SEGMENT|C_SEGMENT|D_SEGMENT|E_SEGMENT|F_SEGMENT,            //0
  B_SEGMENT|C_SEGMENT,                                                    //1
  A_SEGMENT|B_SEGMENT|D_SEGMENT|E_SEGMENT|G_SEGMENT,                      //2
  A_SEGMENT|B_SEGMENT|C_SEGMENT|D_SEGMENT|G_SEGMENT,                      //3
  B_SEGMENT|C_SEGMENT|F_SEGMENT|G_SEGMENT,                                //4
  A_SEGMENT|C_SEGMENT|D_SEGMENT|F_SEGMENT|G_SEGMENT,                      //5
  A_SEGMENT|C_SEGMENT|D_SEGMENT|E_SEGMENT|F_SEGMENT|G_SEGMENT,            //6
  A_SEGMENT|B_SEGMENT|C_SEGMENT,                                          //7
  A_SEGMENT|B_SEGMENT|C_SEGMENT|D_SEGMENT|E_SEGMENT|F_SEGMENT|G_SEGMENT,  //8
  A_SEGMENT|B_SEGMENT|C_SEGMENT|D_SEGMENT|F_SEGMENT|G_SEGMENT             //9
};

void setup()
{
  pinMode(CS_PIN, OUTPUT);
  digitalWrite(CS_PIN, HIGH);
  SPI.begin();

  clearDisplay(4);
  delay(1000);
}

void loop()
{
  writeNumber(count);
  
  count++;
  if(count>9)
  {
    count=0;
  }

  delay(1000);
}

//function to write number to display
void writeNumber(uint8_t num)
{
  digitalWrite(10, LOW);
  SPI.transfer(displayMap[num]);
  digitalWrite(10, HIGH);
}

//function to clear display output
void clearDisplay(uint8_t numDigits)
{
  digitalWrite(10, LOW);
  for(int i=0; i<numDigits; i++)
  {
    SPI.transfer(0x00);
  }
  digitalWrite(10, HIGH);
}

Credits

Mike Kushnerik
6 projects • 7 followers
Electrical Engineer

Comments