#include "SevSeg.h"
SevSeg sevseg; //Instantiate a seven segment controller object
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
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
updateWithDelays, leadingZeros, disableDecPoint);
sevseg.setBrightness(90);
pinMode(A5, INPUT_PULLUP);
pinMode(A4, INPUT_PULLUP);
pinMode(A3, INPUT_PULLUP);
sevseg.setNumber(0, 0);
sevseg.refreshDisplay();
}
void loop() {
static unsigned long timer = millis(),ssetdown=0, sadddown=0, ssubdown=0;
static int deciSeconds = 0;
if (millis() - timer >= 100) {
timer += 100;
// deciSeconds++; // 100 milliSeconds is equal to 1 deciSecond
// if (deciSeconds == 10000) { // Reset to 0 after counting for 1000 seconds.
// deciSeconds=0;
// }
sevseg.setNumber(deciSeconds);
}
int sadd = digitalRead(A5);
int ssub = digitalRead(A4);
int sset = digitalRead(A3);
if (sset == 0 && ssetdown==0) {
deciSeconds = 9999;
ssetdown = millis();
sevseg.setNumber(deciSeconds);
}
if (sset == 1 ) {
if (millis() - ssetdown >= 20)
ssetdown = 0;
}
if (sadd == 0 && sadddown==0) {
deciSeconds++;
if (deciSeconds > 9999) deciSeconds =0;
sadddown = = millis();
sevseg.setNumber(deciSeconds);
}
if (sadd == 1) {
if (millis() - sadddown >= 20)
sadddown = 0;
}
if (ssub == 0 && ssubdown==0) {
if (deciSeconds>0) deciSeconds--;
ssubdown = = millis();
sevseg.setNumber(deciSeconds);
}
if (ssub== 1 ) {
if (millis() - ssubdown >= 20)
ssubdown = 0;
}
sevseg.refreshDisplay(); // Must run repeatedly
}
/// END ///