// by Nissanka MD Weerasinghe SLCOTM
// this has trick to remove visibility of tuning off of some segments
// when display number change.
// This single program can use for both common anode or cathode cases only to
// change the setting at the begining.
// Make sure to use transistors at common cathod pin to handle the current
// as micro controller pin itself may be incapable of handling current for
// multiple segments on.
bool Common_Anode = false; // make this false for common cathod, true for commom anode
bool SegOn = !Common_Anode;
int Common_Pin_No = 13;
void setup() {
pinMode(Common_Pin_No, OUTPUT);
digitalWrite(Common_Pin_No,Common_Anode);
for(int i = 2; i<9;i++)
{
pinMode(i, OUTPUT);
digitalWrite(i, SegOn);
delay(100);
}
delay(300);
}
void loop() {
SSD0();
delay(1000);
SSD1();
delay(1000);
SSD2();
delay(1000);
SSD3();
delay(1000);
SSD4();
delay(1000);
SSD5();
delay(1000);
SSD6();
delay(1000);
SSD7();
delay(1000);
SSD8();
delay(1000);
SSD9();
delay(1000);
/*
*/
}
void clear()
{
//erase display (turn off All segments) and turn off display by common line
for(int i = 2; i<9;i++) digitalWrite(i, !SegOn);
digitalWrite(Common_Pin_No, !Common_Anode); // turn SSD off
}
void SSD_on()
{
delay(50); // only for wokwi simulation
digitalWrite(13, Common_Anode);
}
void All()
{
for(int i = 2; i<9;i++)
{
digitalWrite(i, SegOn);
}
}
void SSD0() // Display 1
{
clear();
All();
digitalWrite(8,!SegOn);
SSD_on();
}
void SSD1() // Display 1
{
clear();
digitalWrite(3,SegOn);
digitalWrite(4,SegOn);
SSD_on();
}
void SSD2() // Display 2
{
clear();
All();
digitalWrite(4,!SegOn);
digitalWrite(7,!SegOn);
SSD_on();
}
void SSD3()
{
clear();
All();
digitalWrite(6,!SegOn);
digitalWrite(7,!SegOn);
SSD_on();
}
void SSD4()
{
clear();
All();
digitalWrite(2,!SegOn);
digitalWrite(5,!SegOn);
digitalWrite(6,!SegOn);
SSD_on();
}
void SSD5()
{
clear();
All();
digitalWrite(3,!SegOn);
digitalWrite(6,!SegOn);
SSD_on();
}
void SSD6()
{
clear();
All();
digitalWrite(3,!SegOn);
SSD_on();
}
void SSD7()
{
clear();
digitalWrite(2,SegOn);
digitalWrite(3,SegOn);
digitalWrite(4,SegOn);
SSD_on();
}
void SSD8()
{
clear();
All();
SSD_on();
}
void SSD9()
{
clear();
All();
digitalWrite(6,!SegOn);
SSD_on();
}