#include<array>
using namespace std;
#define a 5
#define b 22
#define c 25
#define d 26
#define e 27
#define f 18
#define g 33
#define dig1 17
#define dig2 19
#define dig3 21
#define dig4 32
int segments[7] = {a,b,c,d,e,f,g};
int digits[4] = {dig4,dig3,dig2,dig1};
// 2 dimentional array indicating on and off state of each segment of 7 segment display
int segMap[10][7] = {
{1,1,1,1,1,1,0},
{0,1,1,0,0,0,0},
{1,1,0,1,1,0,1},
{1,1,1,1,0,0,1},
{0,1,1,0,0,1,1},
{1,0,1,1,0,1,1},
{1,0,1,1,1,1,1},
{1,1,1,0,0,0,0},
{1,1,1,1,1,1,1},
{1,1,1,1,0,1,1},
};
void ClearDigit(int digitPosition){
digitalWrite(digits[digitPosition], LOW);
for(auto i: segments)
digitalWrite(segments[i], HIGH);
digitalWrite(digits[digitPosition], HIGH);
}
void ClearDisplay(){
for(int i = 0; i < 5; i++){
ClearDigit(i);
}
}
void InitPins(int pinArray[], HIGHLOW){
int arraySize = sizeof(pinArray) / 4;
for(int i = 0; i < arraySize; i++){
pinMode(pinArray[i], OUTPUT);
digitalWrite(pinArray[i], HIGHLOW)
}
}
void DisplayDigit(int number){
//InitPins(segments);
for(int i = 0; i < 7; i = i +1){
if (segMap[number][i] == 1){
digitalWrite(segments[i], LOW);
}
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
InitPins(segments, HIGH);
InitPins(digits, LOW);
}
void loop() {
digitalWrite(32,HIGH);
DisplayDigit(1);
}