#define common_cathode 0
#define common_anode 1
#define pinA 6
#define pinB 7
#define pinC 8
#define pinD 9
#define pinE 10
#define pinF 11
#define pinG 12
#define pinDP 13
#define D1 2
#define D2 3
#define D3 4
#define D4 5
#define DP 30
#define Btn A1
String Nmbr="1234";
bool Type = common_anode;// Selet the display type
const int charsInArray = 37;
byte digits[]{D1,D2,D3,D4}; // defining the digit pins
byte seg[] {pinA,pinB,pinC,pinD,pinE,pinF,pinG,pinDP}; // defining the seven segment pins
byte Char[37][9] {
{1,1,1,1,1,1,0,0,'0'},//0
{0,1,1,0,0,0,0,0,'1'},//1
{1,1,0,1,1,0,1,0,'2'},//2
{1,1,1,1,0,0,1,0,'3'},//3
{0,1,1,0,0,1,1,0,'4'},//4
{1,0,1,1,0,1,1,0,'5'},//5
{1,0,1,1,1,1,1,0,'6'},//6
{1,1,1,0,0,0,0,0,'7'},//7
{1,1,1,1,1,1,1,0,'8'},//8
{1,1,1,1,0,1,1,0,'9'}, //9
{1,1,1,0,1,1,1,0,'a'},//A/1
{0,0,1,1,1,1,1,0,'b'},//b/2
{0,0,0,1,1,0,1,0,'c'},//C/3
{0,1,1,1,1,0,1,0,'d'},//d/4
{1,0,0,1,1,1,1,0,'e'},//E/5
{1,0,0,0,1,1,1,0,'f'},//F/6
{1,0,1,1,1,1,0,0,'g'},//G/7
{0,1,1,0,1,1,1,0,'h'},//H/8
{0,1,1,0,0,0,0,0,'i'},//I/9
{0,1,1,1,1,0,0,0,'j'},//J/10
{0,0,0,1,1,1,0,0,'l'},//L/11
{0,0,1,0,1,0,1,0,'n'},//n/12
{0,0,1,1,1,0,1,0,'o'},//o/13
{1,1,0,0,1,1,1,0,'p'},//P/14
{1,1,1,0,0,1,1,0,'q'},//q/15
{0,0,0,0,1,0,1,0,'r'},//r/16
{1,0,1,1,0,1,1,0,'s'},//S/17
{0,0,0,1,1,1,1,0,'t'},//t/18
{0,1,1,1,1,1,0,0,'u'},//U/19
{0,1,1,1,0,1,1,0,'y'},//y/20
{0,0,0,0,0,0,0,1,'.'},//.
{0,0,0,0,0,0,1,0,'-'},//dash/negative
{0,0,0,1,0,0,0,0,'_'},//underscore
{1,0,0,1,1,1,0,0,'['},//[
{1,1,1,1,0,0,0,0,']'},//]
{1,1,0,0,1,0,1,0,'?'},//?
{0,0,0,0,0,0,0,0,' '}//blank
};
void setup() {
// initialize the I/O pins
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
pinMode(pinE, OUTPUT);
pinMode(pinF, OUTPUT);
pinMode(pinG, OUTPUT);
pinMode(pinDP, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
pinMode(Btn, INPUT_PULLUP);
Serial.begin(9600); // Initialize the serial communication.
Serial.println(" ");
}
void loop() {
print_number(Nmbr); //Print the number of seven segment display
Reset_Seven_Segment();// Reset the seven segment
}
void print_number(String text)
{
char char1 = text.charAt(0);
char char2 = text.charAt(1);
char char3 = text.charAt(2);
char char4 = text.charAt(3);
//char char5 = text.charAt(4);
//char char1Num = 0;
//char char2Num = 0;
//char char3Num = 0;
//char char4Num = 0;
int nmbr_of_digits = text.length();
if(nmbr_of_digits < 6){
while(digitalRead(Btn)==HIGH){
if (Serial.available()>0)
{
Reset_Seven_Segment();
Nmbr=Serial.readString();
Serial.println((String)"Number Received "+Nmbr);
}
if(1 > nmbr_of_digits) char1 = ' ';
else char1 = text.charAt(0);
if(2 > nmbr_of_digits) char2 = ' ';
else char2 = text.charAt(1);
if(3 > nmbr_of_digits) char3 = ' ';
else char3 = text.charAt(2);
if(4 > nmbr_of_digits) char4 = ' ';
else char4 = text.charAt(3);
print_char(char1,D1);
delay(2);
print_char(char2,D2);
delay(2);
print_char(char3,D3);
delay(2);
print_char(char4,D4);
delay(2);
}
Serial.println("Button Pressed");
}
}
void print_char(char ch,int digit_number)
{ Reset_Seven_Segment();
int character = -1;
digitalWrite(digit_number,Type);
for(int i = 0 ; i < charsInArray ; i++){
if(ch == Char[i][8]){
character = i;
}
}
if (character == -1){
digitalWrite(pinG,!Type);
}else{
for(int i = 0;i<= 7;i++)
{if(Type == common_anode) digitalWrite(seg[i],!Char[character][i]);
else if(Type == common_cathode) digitalWrite(seg[i],Char[character][i]);
}
}
}
void Reset_Seven_Segment()
{ digitalWrite(D1, !Type);
digitalWrite(D2, !Type);
digitalWrite(D3, !Type);
digitalWrite(D4, !Type);
for(byte i = 0 ; i < 8 ; i++){
digitalWrite(seg[i],Type);
}
}