Escolar Documentos
Profissional Documentos
Cultura Documentos
Curitiba,
Novembro 2023
Curitiba,
Novembro 2023
Introdução
Desenvolvimento de um cronômetro utilizando um display TM1637 para exibir o
tempo decorrido, com funcionalidades de pausa e reset. Além disso, o projeto inclui
um display LCD 1602, mesmo que esteja com defeito.
Código:
Explicação Detalhada:
Setup:
Modos:
Código:
const byte pinButPause = 8; // Define a porta digital 8 para o push button (pausa)
const byte pinButReset = 9; // Define a porta digital 12 para o push button (reset)
// declarações de variáveis
byte mode = 0;
uint32_t tempoPause = 0;
uint32_t timer = 0;
uint32_t t = 0;
uint8_t position[] = { 0, 0, 0, 0 }; //
void setup() {
Serial.begin(9600);
lcd.setCursor(1,0);
lcd.print("Cron");
lcd.write(239);
lcd.print("metro");
void loop() {
if (!digitalRead(pinButPause)) {
delay(50);
if (!digitalRead(pinButReset)) {
delay(50);
// menu de controle
switch (mode) {
case 0:
resetMode();
break;
case 1:
pauseMode();
break;
case 2:
runMode();
break;
default:
resetMode();
void runMode() {
display.setSegments(position);
lcd.setCursor(1,1);
lcd.print((segundos / 60) / 10); // Dezena de minuto
lcd.setCursor(2,1);
lcd.setCursor(3,1);
lcd.print(":");
lcd.setCursor(4,1);
lcd.setCursor(5,1);
lcd.setCursor(6,1);
lcd.print(",");
lcd.setCursor(7,1);
lcd.setCursor(8,1);
pauseMode();
void resetMode() {
// Zera o display
display.setSegments(position);
lcd.setCursor(1,1);
lcd.print("00:00,00");
delay(50);
tempoPause = 0;
timer = 0;
t = millis();
mode = 2;
void pauseMode() {
while(digitalRead(pinButPause)) {
if (!digitalRead(pinButReset)) {
while (!digitalRead(pinButReset)) { } //esperera soltar o botão Reset
delay(50);
resetMode();
break;
delay(50);
tempoPause = timer;
t = millis();
mode = 2;
Referências
https://youtu.be/O4eZgCR9h9s