Libraries used in IDE: bounce2 & Sevseg
board used:arduino nano v3
push button is connected at analog A1 (15th pin) using analog pin as digital input.
i want to use push button to start or pause countdown from 60 to 0
when i press push button then timer can start. when i press push button again then it can pause seven segment digits but it still counting at background. so when i resume counting , its cant start where it was pause last time.
#include "SevSeg.h"
#include <Bounce2.h>
#define BUTTON_PIN 15
#define LED_PIN 13
int ledState = LOW;
SevSeg sevseg; //Instantiate a seven segment controller object
Bounce debouncer = Bounce();
void setup() {
byte numDigits = 4;
byte digitPins[] = {2, 3, 4, 5};
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};
sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins);
sevseg.setBrightness(90);
pinMode(BUTTON_PIN, INPUT_PULLUP);
// After setting up the button, setup the Bounce instance :
debouncer.attach(BUTTON_PIN);
debouncer.interval(500);
// Setup the LED :
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, ledState);
}
void loop() {
debouncer.update();
// Call code if Bounce fell (transition from HIGH to LOW) :
if ( debouncer.fell() ) {
// Toggle LED state :
ledState = !ledState;
digitalWrite(LED_PIN, ledState);
}
pinMode(13, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
digitalWrite(18, LOW);
digitalWrite(19, HIGH);
int value = debouncer.read();
static unsigned long timer = millis();
static int deciSeconds = 60;
if ( ledState == HIGH ) {
if (millis() >= timer) {
deciSeconds--; // 100000 milliSeconds is equal to 1 Min
timer += 1000;
// digitalWrite(13, HIGH);
if (deciSeconds <= 0) { // Reset to 0 after counting for 1000 seconds.
deciSeconds = 0;
// digitalWrite(13, LOW);
}
sevseg.setNumber(deciSeconds, 1);
}
sevseg.refreshDisplay(); // Must run repeatedly
}
else {
deciSeconds;
timer ;
sevseg.setNumber(deciSeconds, 1);
sevseg.refreshDisplay(); // Must run repeatedly
// digitalWrite(13, LOW);
}
}
/// END ///