//wiring and display programme for this 3.1 digit display
//https://wenku-baidu-com.translate.goog/view/5bee2ea2dd36a32d737581d0.html?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en-US&_x_tr_pto=wapp
//Define Segment Pins
#define IN1 12
#define IN2 13
#define d1B1 0
#define E2C1 1
#define G2B2 2
#define D2C2 3
#define F2A2 4
#define B3G3 5
#define A3F3 6
#define C3D3 7
#define E4E3 8
#define G4B4 9
#define D4C4 10
#define F4A4 11
void setup() {
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(d1B1,OUTPUT);
pinMode(E2C1,OUTPUT);
pinMode(G2B2,OUTPUT);
pinMode(D2C2,OUTPUT);
pinMode(F2A2,OUTPUT);
pinMode(B3G3,OUTPUT);
pinMode(A3F3,OUTPUT);
pinMode(C3D3,OUTPUT);
pinMode(E4E3,OUTPUT);
pinMode(G4B4,OUTPUT);
pinMode(D4C4,OUTPUT);
pinMode(F4A4,OUTPUT);
//start with everything off
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(d1B1,HIGH);
digitalWrite(E2C1,HIGH);
digitalWrite(G2B2,HIGH);
digitalWrite(D2C2,HIGH);
digitalWrite(F2A2,HIGH);
digitalWrite(B3G3,HIGH);
digitalWrite(A3F3,HIGH);
digitalWrite(C3D3,HIGH);
digitalWrite(E4E3,HIGH);
digitalWrite(G4B4,HIGH);
digitalWrite(D4C4,HIGH);
digitalWrite(F4A4,HIGH);
}
void loop() {
int DISP = (millis()/1000);
//string for extracting each digit of int DISP (e.g 1234 to 1,2,3,4)
int DIG1 = (DISP/1000U)%10;// "1---"
int DIG2 = (DISP/100U)%10;// "-2--"
int DIG3 = (DISP/10U)%10;// "--3-"
int DIG4 = (DISP/1U)%10;// "---4"
//Phase 1
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
switch (DIG2)
{
case 0:
if(DISP > 99){
digitalWrite(E2C1,LOW);
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);}
break;
case 2:
digitalWrite(E2C1,LOW);
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
break;
case 3:
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
break;
case 4:
digitalWrite(G2B2,LOW);
digitalWrite(F2A2,LOW);
break;
case 5:
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);
break;
case 6:
digitalWrite(E2C1,LOW);
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);
break;
case 8:
digitalWrite(E2C1,LOW);
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);
break;
case 9:
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);
break;
}
switch (DIG3)
{
case 0:
if(DISP > 9){
digitalWrite(B3G3,LOW);
digitalWrite(A3F3,LOW);
digitalWrite(C3D3,LOW);}
break;
case 1:
digitalWrite(B3G3,LOW);
digitalWrite(C3D3,LOW);
break;
case 2:
digitalWrite(B3G3,LOW);
digitalWrite(A3F3,LOW);
break;
case 3:
digitalWrite(B3G3,LOW);
digitalWrite(A3F3,LOW);
digitalWrite(C3D3,LOW);
break;
case 4:
digitalWrite(B3G3,LOW);
digitalWrite(C3D3,LOW);
break;
case 5:
digitalWrite(A3F3,LOW);
digitalWrite(C3D3,LOW);
break;
case 6:
digitalWrite(A3F3,LOW);
digitalWrite(C3D3,LOW);
break;
case 7:
digitalWrite(B3G3,LOW);
digitalWrite(A3F3,LOW);
digitalWrite(C3D3,LOW);
case 8:
digitalWrite(B3G3,LOW);
digitalWrite(A3F3,LOW);
digitalWrite(C3D3,LOW);
break;
case 9:
digitalWrite(B3G3,LOW);
digitalWrite(A3F3,LOW);
digitalWrite(C3D3,LOW);
break;
}
switch (DIG4)
{
case 0:
if(DISP > 0){
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);
digitalWrite(E4E3,LOW);}
break;
case 2:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
digitalWrite(E4E3,LOW);
break;
case 3:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
break;
case 4:
digitalWrite(G4B4,LOW);
digitalWrite(F4A4,LOW);
break;
case 5:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);
break;
case 6:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);
digitalWrite(E4E3,LOW);
break;
case 8:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);
digitalWrite(E4E3,LOW);
break;
case 9:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);
break;
}
//clear phase 1
digitalWrite(d1B1,HIGH);
digitalWrite(E2C1,HIGH);
digitalWrite(G2B2,HIGH);
digitalWrite(D2C2,HIGH);
digitalWrite(F2A2,HIGH);
digitalWrite(B3G3,HIGH);
digitalWrite(A3F3,HIGH);
digitalWrite(C3D3,HIGH);
digitalWrite(E4E3,HIGH);
digitalWrite(G4B4,HIGH);
digitalWrite(D4C4,HIGH);
digitalWrite(F4A4,HIGH);
//phase 2
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
switch (DIG1)
{
case 1:
digitalWrite(d1B1,LOW);
digitalWrite(E2C1,LOW);
break;
}
switch (DIG2)
{
case 0:
if(DISP > 99){
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);}
break;
case 1:
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
break;
case 2:
digitalWrite(G2B2,LOW);
digitalWrite(F2A2,LOW);
break;
case 3:
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);
break;
case 4:
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
break;
case 5:
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);
break;
case 6:
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);
break;
case 7:
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);
break;
case 8:
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);
break;
case 9:
digitalWrite(G2B2,LOW);
digitalWrite(D2C2,LOW);
digitalWrite(F2A2,LOW);
break;
}
switch (DIG3)
{
case 0:
if(DISP > 9){
digitalWrite(A3F3,LOW);
digitalWrite(C3D3,LOW);
digitalWrite(E4E3,LOW);}
break;
case 2:
digitalWrite(B3G3,LOW);
digitalWrite(C3D3,LOW);
digitalWrite(E4E3,LOW);
break;
case 3:
digitalWrite(B3G3,LOW);
digitalWrite(C3D3,LOW);
break;
case 4:
digitalWrite(A3F3,LOW);
digitalWrite(B3G3,LOW);
break;
case 5:
digitalWrite(A3F3,LOW);
digitalWrite(B3G3,LOW);
digitalWrite(C3D3,LOW);
break;
case 6:
digitalWrite(A3F3,LOW);
digitalWrite(B3G3,LOW);
digitalWrite(C3D3,LOW);
digitalWrite(E4E3,LOW);
break;
case 8:
digitalWrite(B3G3,LOW);
digitalWrite(A3F3,LOW);
digitalWrite(C3D3,LOW);
digitalWrite(E4E3,LOW);
break;
case 9:
digitalWrite(B3G3,LOW);
digitalWrite(A3F3,LOW);
digitalWrite(C3D3,LOW);
break;
}
switch (DIG4)
{
case 0:
if(DISP > 0){
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);}
break;
case 1:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
break;
case 2:
digitalWrite(G4B4,LOW);
digitalWrite(F4A4,LOW);
break;
case 3:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);
break;
case 4:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
break;
case 5:
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);
break;
case 6:
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);
break;
case 7:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);
break;
case 8:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);
break;
case 9:
digitalWrite(G4B4,LOW);
digitalWrite(D4C4,LOW);
digitalWrite(F4A4,LOW);
break;
}
//clear phase 1
digitalWrite(d1B1,HIGH);
digitalWrite(E2C1,HIGH);
digitalWrite(G2B2,HIGH);
digitalWrite(D2C2,HIGH);
digitalWrite(F2A2,HIGH);
digitalWrite(B3G3,HIGH);
digitalWrite(A3F3,HIGH);
digitalWrite(C3D3,HIGH);
digitalWrite(E4E3,HIGH);
digitalWrite(G4B4,HIGH);
digitalWrite(D4C4,HIGH);
digitalWrite(F4A4,HIGH);
}