Medir tem com arduino

Boa noite, sou bem noob em arduino e em programação, eu quero ler as informações do chip de RTC DS1302 em dois momentos diferentes e calcular a diferença entre eles em segundos ou minutos.

Um exemplo.

Data e hora: 30/7/2015 16:46:35
Data e hora: 15/2/2015 4:12:13

Eu poderia transformar todos eles em segundos ou minutos e depois subtrair uma pela outra, mas eu utilizaria muitas variáveis e talvez isso não funcione muito bem com meses que tenham menos ou mais de 30 dias. Tem algum jeito mais fácil de contar diferenças de tempo no arduino ou algo mais fácil de fazer isso ? sei que essa duvida é meio besta, mas não consegui achar uma solução melhor. obrigado pela ajuda.

Serial.print("Data e hora: ");
Serial.print(myRTC.dayofmonth);
Serial.print("/");
Serial.print(myRTC.month);
Serial.print("/");
Serial.print(myRTC.year);
Serial.print(" ");
Serial.print(myRTC.hours);
Serial.print(":");
Serial.print(myRTC.minutes);
Serial.print(":");
Serial.println(myRTC.seconds);

1 Like

Eu só me estou de lembrar de uma: transformar as duas datas em segundos (ou milissegundos) a contar de uma data fixa (por exemplo 1 de Janeiro de 1980) e depois subtrair os dois valores.

1 Like

O que pode fazer, é só transformar aquelas variables que são diferentes entre elas:

Vem na minha mente algo assim: (não testei)

int lastHour  = [year,month,day,hours,minutes,seconds]
  int currentHour = [myRTC.year,myRTC.month,myRTC.dayofmonth,myRTC.hours,myRTC.minutes,myRTC.seconds]

  if(int i=0;i <= sizeof(lastHour);i++){
    if(lastHour[i] != currentHour[i]){
      //ano
      if(i == 0){
        //multiplicação pra comvertir anos em segundos
        lastHourSeconds = 200000 // só um exemplo
        currentHourSeconds = 200000 // só um exemplo
      }
      //messes
      if(i == 1){
        //multiplicação pra comvertir messes em segundos
        lastHourSeconds += 2000 // só um exemplo
        currentHourSeconds += 2000 // só um exemplo
      }
      //días
      if(i == 2){
        //multiplicação pra comvertir días em segundos
        lastHourSeconds += 5000 // só um exemplo
        currentHourSeconds += 30000 // só um exemplo
      }
      //horas
      if(i == 3){
        //multiplicação pra comvertir horas em segundos
        lastHourSeconds += 80000 // só um exemplo
        currentHourSeconds += 1000 // só um exemplo
      }
      // asssim com todos

      // calculo total
      tempo_passado = lastHourSeconds - currentHourSeconds // resultado em segundos
    }
  }
1 Like

transformar as duas datas em segundos (ou milissegundos) a contar de uma data fixa (por exemplo 1 de Janeiro de 1980) e depois subtrair os dois valores.

Penso que esta seja a solução ideal.Muitas linguagens de programação dispõem deste método para contagens de intervalos de tempo (php, c#, Objectiv C, Java ...)

1 Like