Codigo para contagem

Sou novo aqui e não achei nenhum tópico relacionado com isso...

então estou me batendo para fazer um código que faça a contagem de distância...
a base seria isso

se a leitura do ldr for maior que 820 quero que some 17 cm e assim va acumulando e vá somando quantas vezes somou 17 cm, por ex se o ldr passou 2x o resultado tem que dar 34 cm e por aí vai...

valeuuuu

distancia=(analogRead(PinodoLDR)/820)*17;

então, acho que assim nao vai rolar cara, teria que ser deste jeito, quando o ldr passar de 800, fazer uma variavel que conte quantas vezes ele passou... e depois multiplique por 17

Se já sabe exatamente o que quer, qual é a dificuldade então?

colocar isso que eu te disse em codigo :\

Eu espanto-me que as pessoas nem sequer tentam para demonstrar que estão interessadas em resolver o problema. Em vez disso chegam, dizem que têm um problema e querem:

filiipake:
colocar isso que eu te disse em codigo :\

Isto aqui não é um servico de codificacão à borla... as pessoas que participam no fórum estão cá para te indicar um caminho para um problema, tirar uma dúvida pontual ou discutir problemas interessantes entre elas. Não estão aqui para fazer as coisas que queres fazer sem que tu mostres que tentaste atingir o que pretendias.
Se queres que alguém te faca algo, contacta essa pessoa e chega a um acordo com ela para esse servico te ser prestado. Pode ser que haja até quem esteja interessado em caridade.

O que tu queres fazer é sempre que o teu valor analógico seja ultrapassado, activas uma flag. Para fazer isto, usas um if.

Depois sempre que essa flag seja activada, crias outra variável que te indica que a flag foi contada e incrementas uma variável.
Quando o teu valor analógico descer abaixo do teu valor analógico, limpas essas duas flags.

É isto que queres fazer. Experimenta, faz algo, mesmo que miseravelmente e coloca aqui para a gente te indicar o caminho.

Consegui ja aqui cara, li bastante sobre o assunto e resolvi o problema : aqui vai a parte do codigo que eu não conseguia fazer haha

" if (vldr>210) {
cont=(cont++);
distancia = (cont*17);
delay(800);
"

valeuu haha

Isso... está errado. Mas pelo menos mostraste que fizeste algo...

unsigned char flag = 0; 

if (vldr>210 && flag == 0) {
  flag = 1; 
  cont++;
  distancia = (cont*17);
  }

if (vldr < 210) {
   flag = 0; 
}

Como fizeste falha porque:

  • Se o teu valor analógico ficar acima de 210 por mais de 800 ms, vais somar mais que uma vez.
  • Se o teu valor anal´gico ficar acima de 210 por mais de uma vez durante esses 800 ms, o teu programa só vai somar uma vez.