Ir ao conteúdo
  • Cadastre-se

Connan

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. Olá, Edson: Caso ainda não tenha resolvido seu problema, aí vai uma sugestão, baseada em seu próprio código: /** Sugiro que: 1. Divida o código em funções. Fica mais fácil de entender e depurar. Função Clock(): Verifica se está na hora de atualizar o cronômetro ( copiei o que você já tinha feito ). Função lcdPrintTime(): Mostra o tempo no LCD ( é uma função auxiliar da função lcdPrintShift ) Função lcdPrintShift(): desloca as informações de tempo no LCD 2. Use arrays para as informações, pois isto facilita a movimentação de valores e a mostra no LCD. O setup() pode ficar como está. As variáveis devem ser modificadas para: int Horas[4], Minutos[4], Segundos[4], Decimais[4] ; // Horas[0] ... Decimais[0] é o cronômetro O índice 0 corresponde ao cronômetro ( Horas[0] ... Decimais[0] ) O índice 1 corresponde ao tempo a mostrar na linha 1 do LCD ( Horas[1] ... Decimais[1] ) O índice 2 corresponde ao tempo a mostrar na linha 2 do LCD ( Horas[2] ... Decimais[2] ) O índice 3 corresponde ao tempo a mostrar na linha 3 do LCD ( Horas[3] ... Decimais[3] ) No main() faça o seguinte: - Chame Clock() - Verifique os botões - Se for para zerar o cronômetro, faça Horas[ 0 ] = Minutos[ 0 ] = Segundos[ 0 ] = Decimais[ 0 ] = 0 ; lcd.clear(); - Se for Pausa/Play, chame lcdPrintShift() Sugestões das rotinas seguem abaixo **/ void Clock( void ) { Milisegundos[ 0 ] = millis(); if ( Milisegundos[ 0 ] % 100 == 0 ) { //Entrar apenas se tiver passado o décimo de segundo Decimais[ 0 ]++; if ( Decimais[ 0 ] == 10 ) { //Quando passou 10 décimos de segundo, conta um segundo Decimais[ 0 ] = 0; Segundos[ 0 ]++; } if ( Segundos[ 0 ] == 60 ) { // Após 60 Segundos, conta um minuto Segundos[ 0 ] = 0; Minutos[ 0 ]++; } if ( Minutos[ 0 ] == 60 ) { // Depois de 60 Minutos, conta uma hora Minutos[ 0 ] = 0; Horas[ 0 ]++; } } } void lcdPrintTime( int lcdLineParam ) { if ( Horas[ lcdLineParam ] > 9 ) lcd.print( "0" ) ; lcd.print( Horas[ lcdLineParam ] ) ; lcd.print( ":" ) ; if ( Minutos[ lcdLineParam ] > 9 ) lcd.print( "0" ) ; lcd.print( Minutos[ lcdLineParam ] ) ; lcd.print( ":" ) ; if ( Segundos[ lcdLineParam ] > 9 ) lcd.print( "0" ) ; lcd.print( Segundos[ lcdLineParam ] ) ; lcd.print( ":" ) ; if ( Decimais[ lcdLineParam ] > 9 ) lcd.print( "0" ) ; lcd.print( Decimais[ lcdLineParam ] ) ; } void lcdPrintShift( void ) { for( int i=3; i>0. i-- ) { Horas[ i ] = Horas[ i-1 ] ; Minutos[ i ] = Minutos[ i-1 ] ; Segundos[ i ] = Segundos[ i-1 ] ; Decimais[ i ] = Decimais[ i-1 ] ; lcd.setCursor( 0, i ) ; lcd.PrintTime( i ) ; } }

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!