#include <TM1637Display.h>
TM1637Display display(6,7);
byte pinBut = 2;
int tempo;
byte ini = 0;
uint32_t temporizador = 0;
void setup(){
pinMode(pinBut, INPUT_PULLUP);
display.setBrightness(7);
}
void loop() {
// verifica se o botão (pushbutton) está pressionado e muda o controle
if (!digitalRead(pinBut)) {
ini = !ini; // inverte valor da variável ini
while (!digitalRead(pinBut)) { } //esperera soltar o botão
tempo = 60;
delay(50);
}
// Ativa o cronometro regressivo
if (ini == 1) {
if (millis() - temporizador >= 1000) {
tempo = tempo - 1;
temporizador = millis();
}
}
// Mostra o valor tempo no display (minutos e segundos)
// Zera e cria o array position[] para armazenar os valores do cronômetro
uint8_t position[] = { 0, 0, 0, 0 };
// Calculo individual para posição no display
position[0] = display.encodeDigit((tempo / 60) / 10); // Dezena de minuto
position[1] = display.encodeDigit((tempo / 60) % 10); // Unidade de minuto
position[2] = display.encodeDigit((tempo % 60) / 10); // Dezena de segundo
position[3] = display.encodeDigit((tempo % 60) % 10); // Unidade de segundo
// Coloca o separador ":"
position[1] = position[1] + 128;
display.setSegments(position);
//Mostra o valor inicial no display
display.setSegments(position);
}