#define DIGIT1 15 // pin ESP32 pt catod comun 1 cf tabel
#define DIGIT2 2 // pin ESP32 pt catod comun 2
#define MAX_TIME 5 // timp de multiplexare in milisec
void setup() {
pinMode (DIGIT1, OUTPUT); // catozi comuni
pinMode (DIGIT2, OUTPUT);
pinMode (4, OUTPUT); // segment A cf tabel
pinMode (16, OUTPUT); // segment B cf tabel
pinMode (17, OUTPUT); // segment C cf tabel
pinMode (5, OUTPUT); // segment D cf tabel
pinMode (18, OUTPUT); // segment E cf tabel
pinMode (19, OUTPUT); // segment F cf tabel
pinMode (21, OUTPUT); // segment G cf tabel
Serial.begin(115200);
}
void aprindeCifra(byte digitCurent) {
digitalWrite(4,LOW);
digitalWrite(16,LOW);
digitalWrite(17,LOW);
digitalWrite(5,LOW);
digitalWrite(18,LOW);
digitalWrite(19,LOW);
digitalWrite(21,LOW);
// stinge toate 7 seg.
switch(digitCurent) {
case 1: // stinge semnul “-“
digitalWrite(21, LOW); // stinge segmentul G
break;
case 2: // aprinde cifra “9”
digitalWrite(4,HIGH);
digitalWrite(16,HIGH);
digitalWrite(17,HIGH);
digitalWrite(5,HIGH);
digitalWrite(19,HIGH);
digitalWrite(21,HIGH);
break;
}
}
void loop() {
static unsigned long timp = millis();
static unsigned char digitCurent=1; // alterneaza 1/2 in bucla
// multiplexare catozi: comanda pe rind cei 2 catozi in “0” logic
if (millis() - timp >= MAX_TIME) {
if(digitCurent==1) { // starea curenta
digitalWrite(DIGIT1, HIGH); digitalWrite(DIGIT2, HIGH); //aprinde 1
aprindeCifra(digitCurent);
digitCurent=2; // starea viitoare
}
else {
digitalWrite(DIGIT1, HIGH); digitalWrite(DIGIT2, LOW); //aprinde 2
aprindeCifra(digitCurent);
digitCurent=1;
}
timp = millis(); // pentru comparatia viitoare
}
}
// end multiplexare catozi
// restul buclei }