#include "SevSeg.h"
SevSeg sevseg;
int button1 = A0;
int button2 = A1;
int cnt1 = 0;
int cnt2 = 0;
unsigned long SLOW = 20;
static const uint8_t digitCodeMap[] = {
// GFEDCBA Segments 7-segment map:
0b00111111, // 0 AAA
0b00000110, // 1 F B
0b01011011, // 2 F B
0b01001111, // 3 GGG
0b01100110, // 4 E C
0b01101101, // 5 E C
0b01111101, // 6 DDD
0b00000111, // 7
0b01111111, // 8
0b01101111, // 9
};
void setup() {
byte numDigits = 4;
byte digitPins[] = {2, 3, 4, 5};
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};
bool resistorsOnSegments = false; // 'false' means resistors are on digit pins
byte hardwareConfig = COMMON_ANODE; // See README.md for options
bool updateWithDelays = false; // Default 'false' is Recommended
bool leadingZeros = false; // Use 'true' if you'd like to keep the leading zeros
bool disableDecPoint = false; // Use 'true' if your decimal point doesn't exist or isn't connected. Then, you only need to specify 7 segmentPins[]
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments, updateWithDelays, leadingZeros, disableDecPoint);
sevseg.setBrightness(90);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
if (digitalRead(button1)==LOW) {
unsigned long time = millis();
Serial.println(cnt1);
if(numOfDigits(cnt1)==1) oneDigit(cnt1, 1);
else twoDigits(cnt1, 1);
while(time+SLOW > millis()){}
cnt1 = cnt1 + 1;
if(cnt1==100) cnt1 = 0;
}
if (digitalRead(button2)==LOW) {
unsigned long time = millis();
Serial.println(cnt2);
if(numOfDigits(cnt2)==1) oneDigit(cnt2, 3);
else twoDigits(cnt2, 2);
while(time+SLOW > millis()){}
cnt2 = cnt2 + 1;
if(cnt2==100) cnt2 = 0;
}
sevseg.refreshDisplay();
}
int numOfDigits(int n){
int count = 0;
do {
n /= 10;
++count;
} while (n != 0);
return count;
}
void oneDigit(int n, int pos){
sevseg.setSegmentsDigit(pos, digitCodeMap[n]);
}
void twoDigits(int n, int pos){
int firstNum[] = {0, 1};
int secondNum[] = {2, 3};
int dig, i = 1;
while(i>=0){
dig = n % 10;
if(pos == 1){
sevseg.setSegmentsDigit(firstNum[i], digitCodeMap[dig]);
} else {
sevseg.setSegmentsDigit(secondNum[i], digitCodeMap[dig]);
}
i--;
n = n/10;
}
}