#include <pins_arduino.h> // ESP32 pin definitions
// Segment pin mappings
const int SEG_A = 2;
const int SEG_B = 3;
const int SEG_C = 4;
const int SEG_D = 5;
const int SEG_E = 6;
const int SEG_F = 7;
const int SEG_G = 8;
//const int DP = 9; // Decimal point (optional)
// Digit pin mappings (common cathode)
const int DIG1 = 10;
const int DIG2 = 11;
const int DIG3 = 12;
const int DIG4 = 13;
// Segment patterns for digits (0-9, optional decimal point)
const byte digitPatterns[10] =
{
B01111110, B00110000, B10111011, B10011111,
B01001101, B01100101, B11100011, B00001111,
B00111111, B01011111
};
// Function to display a single digit on a specific segment
void displayDigit(int digit, int segment)
{
digitalWrite(segment, digit & (1 << segment));
}
// Function to display a single digit on the specified position
void displayNumber(int num, int position)
{
byte pattern = digitPatterns[num];
displayDigit(pattern, SEG_A);
displayDigit(pattern, SEG_B);
displayDigit(pattern, SEG_C);
displayDigit(pattern, SEG_D);
displayDigit(pattern, SEG_E);
displayDigit(pattern, SEG_F);
displayDigit(pattern, SEG_G);
// Optional decimal point control
// displayDigit(pattern, DP);
// Turn off unused digits
switch (position)
{
case 1:
digitalWrite(DIG2, 0);
digitalWrite(DIG3, 0);
digitalWrite(DIG4, 0);
break;
case 2:
digitalWrite(DIG1, 0);
digitalWrite(DIG3, 0);
digitalWrite(DIG4, 0);
break;
case 3:
digitalWrite(DIG1, 0);
digitalWrite(DIG2, 0);
digitalWrite(DIG4, 0);
break;
case 4:
digitalWrite(DIG1, 0);
digitalWrite(DIG2, 0);
digitalWrite(DIG3, 0);
break;
}
}
void setup()
{
// Set all segment and digit pins as outputs
pinMode(SEG_A, OUTPUT);
pinMode(SEG_B, OUTPUT);
pinMode(SEG_C, OUTPUT);
pinMode(SEG_D, OUTPUT);
pinMode(SEG_E, OUTPUT);
pinMode(SEG_F, OUTPUT);
pinMode(SEG_G, OUTPUT);
// pinMode(DP, OUTPUT); // Optional
pinMode(DIG1, OUTPUT);
pinMode(DIG2, OUTPUT);
pinMode(DIG3, OUTPUT);
pinMode(DIG4, OUTPUT);
}
void loop()
{
// Example: Display number 1234
displayNumber(1, 1);
displayNumber(2, 2);
displayNumber(3, 3);
displayNumber(4, 4);
// Add more functionalities here
// ...
}