// Define the GPIO pins for each segment (A-G) and the decimal point (DP)
const int segmentPins[7] = {12, 14, 2, 5, 4, 13, 15}; // A-G
// Segment patterns for numbers 0-9 and letters a-f
const byte segmentPatterns[16] = {
0b1111110, // 0
0b0110000, // 1
0b1101101, // 2
0b1111001, // 3
0b0110011, // 4
0b1011011, // 5
0b1011111, // 6
0b1110000, // 7
0b1111111, // 8
0b1111011, // 9
0b1110111, // a
0b0011111, // b
0b1001110, // c
0b0111101, // d
0b1001111, // e
0b1000111 // f
};
// Function to display a given pattern on the seven-segment display
void displayPattern(byte pattern) {
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], (pattern & (1 << (6 - i))) ? HIGH : LOW);
}
}
void setup() {
// Initialize the segment pins as outputs
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
Serial.begin(115200); // Initialize serial communication
Serial.println("ESP32 Seven-Segment Display Initialized");
}
void loop() {
// Display numbers 0-9
for (int i = 0; i < 10; i++) {
displayPattern(segmentPatterns[i]);
Serial.print("Displaying: "); // Send a message to the serial monitor
Serial.println(i);
delay(1000); // Display each number for 1 second
}
// Display letters a-f
for (int i = 10; i < 16; i++) {
displayPattern(segmentPatterns[i]);
Serial.print("Displaying: "); // Send a message to the serial monitor
Serial.println(char('a' + i - 10));
delay(1000); // Display each letter for 1 second
}
}