#include <OneWire.h>
const int buttonPin = A1;
// Define the pins that are connected to the display.
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
const int digitSelectPins[] = {12, 11, 10, 9};
const byte digitPatterns[] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111, // 9
};
int tenSec = 3500;
int twentyfiveMin = 25 * 60;
bool timerStarted = false;
unsigned long startTime;
// void displayMessage(const char *message) {
// Serial.println(message);
// delay(1000);
// }
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT_PULLUP);
// displayMessage("Press button to start timer");
pins();
}
void pins(){
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(digitSelectPins[i], OUTPUT);
}
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], LOW);
}
for (int i = 0; i < 4; i++) {
digitalWrite(digitSelectPins[i], HIGH);
}
}
void displayNumber(int number) {
int digits[4];
for (int i = 0; i < 4; i++) {
digits[i] = number % 10;
number /= 10;
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
digitalWrite(digitSelectPins[j], j == i ? LOW : HIGH);
}
delay(30);
for (int j = 0; j < 7; j++) {
digitalWrite(segmentPins[j], (digitPatterns[digits[i]] >> j) & 1);
}
}
// delay(100);
}
void startTimer() {
timerStarted = true;
startTime = millis();
// Serial.print("Timer started: ");
// Serial.print(twentyfiveMin / 60);
// Serial.println(":00");
}
void loop() {
if (digitalRead(buttonPin) == HIGH && !timerStarted) {
// delay(5);
startTimer();
delay(500);
}
if (timerStarted) {
unsigned long elapsedTime = millis() - startTime;
int remainingTime = tenSec - elapsedTime / 1000;
remainingTime = max(0, remainingTime);
int minutes = remainingTime / 60;
int seconds = remainingTime % 60;
// delay(50);
displayNumber(minutes * 100 + seconds); // Display minutes and seconds together
// delay(10);
// if (remainingTime <= 0) {
// timerStarted = false;
// // displayMessage("Timer completed!");
// }
}
}