Ir ao conteúdo

Posts recomendados

Postado

Bom dia, boa tare ou boa noite.
Estou fazendo um projeto de um cronometro e preciso que ele seja o mais preciso possível, que exiba além dos segundos que exiba também, décimos, centésimos e milésimos.

estou fazendo esse projeto num Arduino.
Até o momento eu cosnegui fazer o cronometro apenas com a casa dos segundos mas não consegui os outros valores.
vou deixar a baixo o código, caso alguém possa me ajudar, sei o básico de programação.


#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

//declaração das variáveis
int horas = 0;
int minutos = 0;
int segundos = 0;
int decimas = 0;
long milisegundos = 0;
int inicio = 10;
int pausa = 9;

void setup(){
  Serial.begin(9600);
  pinMode(inicio, INPUT);
  digitalWrite(inicio, LOW);
  pinMode(pausa, INPUT);
  digitalWrite(pausa, LOW);
  lcd.begin(16,2);
  while(digitalRead(inicio) == LOW){
  lcd.setCursor(0,0);
  lcd.print("00:00:00:00");
 }
}
void loop(){
  
  if(digitalRead(inicio) == HIGH){ 
    horas = 0;
    minutos = 0;
    segundos = 0;
    decimas = 0;
    lcd.clear();
  }
  
  if(digitalRead(pausa) == HIGH){
    delay(200);
    while(digitalRead(pausa) == LOW);
    lcd.setCursor(0,1);
   if(horas < 10){ lcd.print("0");}
    lcd.print(horas);
    lcd.print(":");
   if(minutos < 10){ lcd.print("0");}
    lcd.print(minutos);
    lcd.print(":");
   if(segundos < 10){ lcd.print("0");}
    lcd.print(segundos);
    lcd.print(":");
    lcd.print(decimas);
    delay(200);
  }
  milisegundos = millis();
  if(milisegundos % 100 == 0){ 
    decimas++;
    if(decimas == 10){
      decimas = 0;
      segundos++;
    }
    if(segundos == 60){ 

      segundos = 0;
      minutos++;
    }
    if(minutos == 60){
      minutos = 0;
      horas++;
    }
    //exibição no LCD
    lcd.setCursor(0,0);
   if(horas < 10){
    lcd.print("0");
   }
    lcd.print(horas);
    lcd.print(":");
    lcd.setCursor(3,0);
   if(minutos < 10){
     lcd.print("0");
    }
    lcd.print(minutos);
    lcd.print(":");
    lcd.setCursor(6,0);
   if(segundos < 10){
     lcd.print("0");
    }
    lcd.print(segundos);
    lcd.print(":");
    lcd.setCursor(9,0);
    lcd.print(decimas);
  }
}

 

 

CronometroC++.txt

  • Amei 1
Postado
Em 26/10/2023 às 17:27, hugoakauane disse:

Até o momento eu cosnegui fazer o cronometro apenas com a casa dos segundos mas não consegui os outros valores.

Exemplifique um instante, talvez, ficará tudo ainda mais óbvio. Por exemplo, digamos que iniciou, passou-se 43876 milissegundos [supomos milissegundos sendo a unidade de tempo mais precisa em teu problema]

Em 26/10/2023 às 17:27, hugoakauane disse:
milisegundos = millis();

E agora… com esse instante, qual a disposição e dígitos no LCD?

 

— Palpito que estaria assim:

00:00:43 08 87 876

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...