Contador de tempo com retorno no programa

Galera, quero saber como posso fazer um contador de tempo no qual ele me retorne o tempo na própria programação. Quero fazer um radar, no qual se tem 2 botões com uma distancia já definida (8cm), quando o objeto passar sobre esses botões o Arduino ira cronometrar o tempo em que se levou para passar sobre esses dois botões, e dividir a distancia pelo tempo, informando a velocidade. Eu acho q para isso precisarei fazer com que o tempo seja uma variável para eu poder fazer a conta.

Já pesquisaste a função millis()?

Já, porem para este propósito não sei como utilizar.

Pelos vistos já obteve algumas resposta na secção espanhola do fórum, por isso, desejo-lhe sorte por lá.

sim, pois criei minha conta aqui hj, só após a postagem lá q eu fui achar a sessão em portugas do fourum

É uma pena que não tenha lido as regras antes de postar.

if(digitalRead(senso1) == 1) {
   sensor1 = millis();
   sens1 = 1; }

if (digitalRead(senso2) == 1) {
   sensor2 = millis();
   sens2 = 1;}

if (sens2 == 1 && sens1 == 1) { 
   tempo = (sensor2-sensor1)/1000;
   velocidade = 8/tempo; // velocidade em centimetros por segundo
   sens1 = 0;
   sens2 = 0;
}

E assim que se calculam velocidades, nao?

Deu quase tudo certo, porem, no monitor serial aparece apenas o número 255.

Meu código esta assim:

define botao1 14

define botao2 15

void setup() { pinMode (botao1, INPUT); pinMode (botao2, INPUT); Serial.begin (9600); }

void loop() { if(digitalRead(botao1) == 1) { byte sensor1 = millis(); byte sens1 = 1; }

if (digitalRead(botao2) == 1) { byte sensor2 = millis(); byte sens2 = 1;}

unsigned long sens1, sens2, sensor1, sensor2;

if (sens2 == 1 && sens1 == 1) { byte tempo = (sensor2-sensor1)/1000;}

unsigned long tempo;

byte velocidade = 8/tempo; // velocidade em centimetros por segundo sens1 = 0; sens2 = 0;

Serial.print (velocidade); Serial.print ('\n'); }

ps. É assim msm q se calcula velocidade kkkk

se tivesse lido a informacao acerca da funcao millis, teria reparado que o tipo de dados retornado pela funcao e unsigned long e nao byte...

Muda o byte das variaveis sensor1 e sensor2 para unsigned long.

so mudou o numero que aparece, agora fica aparecendo -1

Meu código ficou assim:

define botao1 52

define botao2 53

void setup() { pinMode (botao1, INPUT); pinMode (botao2, INPUT); Serial.begin (9600); }

void loop() { if(digitalRead(botao1) == 1) { unsigned long sensor1 = millis(); byte sens1 = 1; }

if (digitalRead(botao2) == 1) { unsigned long sensor2 = millis(); byte sens2 = 1;}

unsigned long sens1, sens2, sensor1, sensor2;

if (sens2 == 1 && sens1 == 1) { unsigned long tempo = (sensor2-sensor1)/1000;}

unsigned long tempo;

int velocidade = 8/tempo; // velocidade em centimetros por segundo

Serial.print (velocidade); Serial.print ('\n'); }

Sinceramente, duvido que isso compile. Que esperas atingir com isto?

   unsigned long tempo = (sensor2-sensor1)/1000;}
   
   unsigned long tempo;

?

Pesquisaste e tentaste perceber o que coloquei anteriormente ou atiraste para ali uns unsigned long e esperas que funcione?????? Tens as variaveis declaradas duas vezes.

unsigned long sensor1=0, sensor2=0, tempo=0;
unsigned char sens1=0, sens2=0;

void loop() {
 if(digitalRead(botao1) == 1 && sens1 == 0) {
   sensor1 = millis();
   sens1 = 1; 
}

if (digitalRead(botao2) == 1 && sens2 ==0) {
  sensor2 = millis();
  sens2 = 1;
}

if (sens2 == 1 && sens1 == 1) { 
   tempo = (sensor2-sensor1)/1000;
   float velocidade =  8/tempo; // velocidade em centimetros por segundo
   Serial.println (velocidade);
   sens2 = 0;
   sens1 = 0;
}
   
}

Agora esta tudo certo, muito obrigado pela ajuda, e desculpa os erros bestas, pois estou começando faz pouco tempo.