Skip to content

Instantly share code, notes, and snippets.

@Alex4386
Last active September 17, 2019 09:21
Show Gist options
  • Save Alex4386/ce53f29b34e2d1a4c56fb257423d4ae4 to your computer and use it in GitHub Desktop.
Save Alex4386/ce53f29b34e2d1a4c56fb257423d4ae4 to your computer and use it in GitHub Desktop.
SevenSegmentsDisplay Library for Arduino
typedef struct SevenSegmentCombination {
bool pinA;
bool pinB;
bool pinC;
bool pinD;
bool pinE;
bool pinF;
bool pinG;
} SevenSegmentCombination;
class SevenSegmentsDisplay {
public:
int pinA;
int pinB;
int pinC;
int pinD;
int pinE;
int pinF;
int pinG;
int pinH;
bool anode;
SevenSegmentsDisplay(int pinA, int pinB, int pinC, int pinD, int pinE, int pinF, int pinG, int pinH, bool anode) {
this->pinA = pinA;
this->pinB = pinB;
this->pinC = pinC;
this->pinD = pinD;
this->pinE = pinE;
this->pinF = pinF;
this->pinG = pinG;
this->pinH = pinH;
this->anode = anode;
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
pinMode(pinE, OUTPUT);
pinMode(pinF, OUTPUT);
pinMode(pinG, OUTPUT);
pinMode(pinH, OUTPUT);
}
void clearScreen() {
bool on = !anode;
bool off = anode;
digitalWrite(pinA, off);
digitalWrite(pinB, off);
digitalWrite(pinC, off);
digitalWrite(pinD, off);
digitalWrite(pinE, off);
digitalWrite(pinF, off);
digitalWrite(pinG, off);
digitalWrite(pinH, off);
}
void writeByCombination(SevenSegmentCombination sevenSeg) {
bool on = !anode;
bool off = anode;
digitalWrite(pinA, sevenSeg.pinA ? on : off);
digitalWrite(pinB, sevenSeg.pinB ? on : off);
digitalWrite(pinC, sevenSeg.pinC ? on : off);
digitalWrite(pinD, sevenSeg.pinD ? on : off);
digitalWrite(pinE, sevenSeg.pinE ? on : off);
digitalWrite(pinF, sevenSeg.pinF ? on : off);
digitalWrite(pinG, sevenSeg.pinG ? on : off);
}
void writeChar(char a) {
this->clearScreen();
SevenSegmentCombination sevenSegCom = { false, };
switch(a) {
#ifdef SEVENSEG_ALLOWIDENTICAL
case 'O':
#endif
case '0':
sevenSegCom = {true, true, true, true, true, true, false};
break;
case '1':
sevenSegCom = {false, true, true, false, false, false, false};
break;
case '2':
sevenSegCom = {true, true, false, true, true, false, true};
break;
case '3':
sevenSegCom = {true, true, true, true, false, false, true};
break;
case '4':
sevenSegCom = {false, true, true, false, false, true, true};
break;
#ifdef SEVENSEG_ALLOWIDENTICAL
case 'S':
case 's':
#endif
case '5':
sevenSegCom = {true, false, true, true, false, true, true};
break;
case '6':
sevenSegCom = {true, false, true, true, true, true, true};
break;
case '7':
sevenSegCom = {true, true, true, false, false, true, false};
break;
case '8':
sevenSegCom = {true, true, true, true, true, true, true};
break;
case '9':
sevenSegCom = {true, true, true, true, false, true, true};
break;
case 'A':
sevenSegCom = {true, true, true, false, true, true, true};
break;
case 'a':
sevenSegCom = {true, true, true, true, true, false, true};
break;
case 'B':
case 'b':
sevenSegCom = {false, false, true, true, true, true, true};
break;
case 'C':
sevenSegCom = {true, false, false, true, true, true, false};
break;
case 'c':
sevenSegCom = {false, false, false, true, true, false, true};
break;
case 'D':
case 'd':
sevenSegCom = {false, true, true, true, true, false, true};
break;
case 'E':
case 'e':
sevenSegCom = {true, false, false, true, true, true, true};
break;
case 'F':
case 'f':
sevenSegCom = {true, false, false, false, true, true, true};
break;
#ifdef SEVENSEG_NONSENSE
case 'G':
case 'g':
sevenSegCom = {true, false, true, true, true, true, false};
break;
#endif
case 'H':
case 'h':
sevenSegCom = {false, true, true, false, true, true, true};
break;
case 'I':
case 'i':
sevenSegCom = {false, false, false, false, true, true, false};
break;
case 'J':
case 'j':
sevenSegCom = {false, true, true, true, false, false, false};
break;
case 'L':
case 'l':
sevenSegCom = {false, false, false, true, true, true, false};
break;
case 'N':
case 'n':
sevenSegCom = {false, false, true, false, true, false, true};
break;
case 'o':
sevenSegCom = {false, false, true, true, true, false, true};
break;
case 'P':
case 'p':
sevenSegCom = {true, true, false, false, true, true, true};
break;
#ifdef SEVENSEG_ALLOWIDENTICAL
case 'Q':
case 'q':
sevenSegCom = {true, true, true, false, false, true, true};
break;
#endif
case 'R':
case 'r':
sevenSegCom = {false, false, false, false, true, false, true};
break;
case 'T':
case 't':
sevenSegCom = {false, false, false, true, true, true, true};
break;
case 'U':
case 'u':
sevenSegCom = {false, true, true, true, true, true, false};
break;
case 'Y':
case 'y':
sevenSegCom = {false, true, true, true, false, true, true};
break;
case '-':
sevenSegCom = {false, false, false, false, false, false, true};
break;
default:
break;
}
this->writeByCombination(sevenSegCom);
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment