#define DP 30
#define pinA 2
#define pinB 3
#define pinC 4
#define pinD 5
#define pinE 7
#define pinF 12
#define pinG 8
#define pinDP 13
#define D1 6
const int charsInArray = 37;
byte digits[]{D1};
byte seg[] {pinA,pinB,pinC,pinD,pinE,pinF,pinG,pinDP};
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 looks like number 5
{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
};
#define common_cathode 0
#define common_anode 1
bool mode = common_cathode;// my display is common anode
void Reset()
{ digitalWrite(D1, !mode);
for(byte i = 0 ; i < 8 ; i++){
digitalWrite(seg[i],mode);
}
}
void printDigit(char Chara,int digitPort)
{ Reset();
int character = -1;
digitalWrite(digitPort,mode);
for(int i = 0 ; i < charsInArray ; i++){
if(Chara == Char[i][8]){
character = i;
}
}
if (character == -1){
digitalWrite(pinG,!mode);
}else{
for(int i = 0;i<= 7;i++){
if(mode == common_anode)
digitalWrite(seg[i],!Char[character][i]);
else if(mode == common_cathode)
digitalWrite(seg[i],Char[character][i]);
}
}
}
void printDisplay(String Phrase,int Delay)
{
char char1 = Phrase.charAt(0);
char char1Num = 0;
int stringLength = Phrase.length();
Reset();
printDigit(char1,D1);
}
void setup() {
// initialize the digital pins as outputs.
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);
Serial.begin(9600);
}
// the loop routine runs over and over again forever:
void loop() {
printDigit('0',D1);
delay(1000);
printDigit('1',D1);
delay(1000);
printDigit('2',D1);
delay(1000);
printDigit('3',D1);
delay(1000);
printDigit('4',D1);
delay(1000);
printDigit('5',D1);
delay(1000);
printDigit('6',D1);
delay(1000);
printDigit('7',D1);
delay(1000);
printDigit('8',D1);
delay(1000);
printDigit('9',D1);
delay(1000);
}