/* Define shift register pins used for seven segment display */ #define LATCH_DIO 4 #define CLK_DIO 7 #define DATA_DIO 8 /* Segment byte maps for numbers 0 to 9 */ const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90}; /* Byte maps to select digit 1 to 4 */ const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8}; void setup() { /* Set DIO pins to outputs */ pinMode(LATCH_DIO,OUTPUT); pinMode(CLK_DIO,OUTPUT); pinMode(DATA_DIO,OUTPUT); } /* Main program */ void loop() { WriteNumberToSegment(0 , 5); WriteNumberToSegment(1 , 6); WriteNumberToSegment(2 , 7); WriteNumberToSegment(3 , 8); } /* Write a decimal number between 0 and 9 to one of the 4 digits of the display */ void WriteNumberToSegment(byte Segment, byte Value) { digitalWrite(LATCH_DIO,LOW); shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]); shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] ); digitalWrite(LATCH_DIO,HIGH); }