#include <Arduino.h>
// Define shift register pins
const int latchPin = 3;
const int clockPin = 2;
const int dataPin = 4;
// Define segment patterns for numbers 0-9
byte Segment_Pins[10] = {
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B10111110, // 6
B11100000, // 7
B11111110, // 8
B11110110 // 9
};
// Define digit pins
const int digit1Pin = 9;
const int digit2Pin = 8;
void setup() {
// Set up shift register pins
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
// Set up digit pins
pinMode(digit1Pin, OUTPUT);
pinMode(digit2Pin, OUTPUT);
}
void displayNumber(int number) {
int tens = number / 10; // Get the tens digit
int ones = number % 10; // Get the ones digit
// Shift out the segment pattern for the tens digit
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, Segment_Pins[tens]);
digitalWrite(latchPin, HIGH);
// Activate digit 1
digitalWrite(digit1Pin, LOW);
delayMicroseconds(500);
digitalWrite(digit1Pin, HIGH);
// Shift out the segment pattern for the ones digit
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, Segment_Pins[ones]);
digitalWrite(latchPin, HIGH);
// Activate digit 2
digitalWrite(digit2Pin, LOW);
delayMicroseconds(500);
digitalWrite(digit2Pin, HIGH);
}
void loop() {
// Display numbers 0-99 on the segment display
for (int count = 0; count < 100; count++) {
displayNumber(count);
delay(100); // Adjust delay as needed
}
}