#include <TM1637Display.h>
// Define the connections pins (CLK and DIO)
#define CLK 2
#define DIO 3
int redsave = 0;
int greensave = 0;
int redtick = 0;
int greentick = 0;
const int buttonredPin = 10;
const int buttongreenPin = 9;
unsigned long previousMillis = 0;
const long interval = 1000;
boolean redState = false;
boolean greenState = false;
boolean redStarter = true;
boolean greenStarter = true;
// Create an instance of the TM1637Display class
TM1637Display display(CLK, DIO);
const uint8_t recalibratingDisplayRed[] = {
0,
SEG_G | SEG_E | SEG_C | SEG_D,
0,
0
};
const uint8_t recalibratingDisplayGreen[] = {
0,
0,
0,
SEG_G | SEG_E | SEG_C | SEG_D
};
void setup() {
// Set the brightness (0-7)
display.setBrightness(0x0f);
pinMode(buttonredPin, INPUT_PULLUP);
pinMode(buttongreenPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
// Example usage of displaySEG function
bool button1Pressed = digitalRead(buttonredPin) == LOW;
bool button2Pressed = digitalRead(buttongreenPin) == LOW;
if (button1Pressed) {redState = true;}else{redState = false;}
if (button2Pressed) {greenState = true;}else{greenState = false;}
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (redState == true && redStarter == true){
redStarter = false;
redtick = redsave;
}
if (greenState == true && greenStarter == true){
greenStarter = false;
greentick = greensave;
}
if (redState == true && redStarter == false){
if (redtick >= 0){
displaySEG("%2d ", redtick);
} else {
display.setSegments(recalibratingDisplayRed); redsave++;
}
redtick--;
} else {
if (redStarter == false){
redStarter = true;
if (redtick >= 0){redsave = redsave - (redtick + 1);}
Serial.println("Redsave = "+String(redsave));
}
}
if (greenState == true && greenStarter == false){
if (greentick >= 0){
displaySEG(" %2d", greentick);
} else {
display.setSegments(recalibratingDisplayGreen); greensave++;
}
greentick--;
} else {
if (greenStarter == false){
greenStarter = true;
if (greentick >= 0){greensave = greensave - (greentick + 1);}
Serial.println("Greensave = "+String(greensave));
}
}
}
if (redState == false && greenState == false){display.clear();}
}
void displaySEG(const char* format, int value) {
char buffer[7]; // Buffer to hold the formatted string
snprintf(buffer, sizeof(buffer), format, value);
uint8_t data[6]; // Array to hold the encoded segments
for (int i = 0; i < 6; i++) {
if (buffer[i] == ' ') {
data[i] = 0x00; // Blank segment for spaces
} else {
data[i] = display.encodeDigit(buffer[i] - '0'); // Encode digit
}
}
display.setSegments(data);
}//