Alguém pode me ajudar com o código abaixo ? 

Sempre printa uma unidade a mais que o "limite" do contador. A ideia é que fosse "printado" cada número de 0 à 9 e recomeçasse.

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int contador;
void setup()

{
lcd.begin(16,2);
}

void loop()

{


if( millis()>500 )
{
for( contador=0; contador <=9; contador = contador +1)
lcd.begin(16, 2);
lcd.print(contador);

delay(800);
}
}

Exibições: 308

As respostas para este tópico estão encerradas.

Respostas a este tópico

Tem q olhar a lógica, oq vc mandou ele executar:

Se millis()>0:

para: contador = 0

até contador <=9

some 1 ao contador.

escreva no lcd

espere 800 ms

Exatamente nessa ordem, certo?

Então para contador = 0, ele soma 1, daí contador = 1, certo?

Imprime contador = 1 no lcd e espera 800 ms

Repete...

Para contador <= 9 (contador = 8), ele soma 1, contador passa a ser 9, e não 8. E imprime 9 no lcd.

O certo seria colocar esse valor do contador dentro de um par de chaves {} pra ele imprimir contador =zero ANTES de somar 1:

void loop()
   { 
      if( millis()>500 )
      {
         for( contador=0; contador <=9; contador++)

         {
            lcd.begin(16, 2);
            lcd.print(contador); 
            delay(800);

         }

      }
   }

 E eram as chaves --'

... obrigado :D.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço