Cálculo da velocidade média com dois sensores ultrassônicos

Olá pessoal, sou novato em programação com arduino e precisava de uma ajudinha.

Estou com um projeto didático no qual tenho que mostrar a velocidade média de um carrinho num LCD 16x2, estou utilizando dois sensores ultrassônicos, Preciso mostrar a velocidade média do carrinho depois que ele passar pelos dois sensores. E nesse passo estou perdido. Acredito que seja algo simples, como armazenar os valores criados na variável que já está mostrando a velocidade, somar e depois dividir, porém não sei como fazer isso.

Agradeço se alguém puder me ajudar.

Olá,
seja bem vindo ao forum.
Se você ainda não leu o tópico recomendado ao inscrever no forum, agora é hora de faze-lo.

" How to get the best out of this forum - Using Arduino / Installation & Troubleshooting - Arduino Forum"

A sua pergunta é tão vaga e desprovida de informações para que possamos ajuda-lo,
que eu não tenho a minima noção da sua dificuldade, de que equipamento está usando.

Veja, eu poderia responder assim:
O meu médico mediu a velocidade do meu sangue nas minhas artérias usando ultrasom.
É isto que voce gostaria de receber de resposta?
Se quiser pagar para alguém projetar para você, recomendo que peça a algum moderador para mudar seu tópico para:

Muito obrigado

[quote="roboticasee, post:1, topic:1087415, full:true"]
Olá pessoal, sou novato em programação com arduino e precisava de uma ajudinha.

Estou com um projeto didático no qual tenho que mostrar a velocidade média de um carrinho num LCD 16x2, estou utilizando dois sensores ultrassônicos, Preciso mostrar a velocidade média do carrinho depois que ele passar pelos dois sensores. E nesse passo estou perdido. Acredito que seja algo simples, como armazenar os valores criados na variável que já está mostrando a velocidade, somar e depois dividir, porém não sei como fazer isso.

Agradeço se alguém puder me ajudar.

Olá! Bem vindo ao Forum.

Você já conseguiu concluir seu projeto?

A observação feita pelo @ruilviana vem no sentido de que, para ajudá-lo, precisamos de detalhes sobre o seu projeto. Veja:

Que variável? Você não mostrou o código que está usando...

O @FernandoGarcia te mostrou um caso um pouco diferente, mas de onde ideias poderiam ser retiradas.

Quando o carrinho passar pelo primeiro sensor, você pode disparar um "cronômetro" usando a função millis(). Quando ele passar pelo outro sensor, você para o cronômetro, converte o tempo para a unidade que quiser e joga na fórmula Vm=Dist/tempo. Naturalmente você precisa posicionar os dois sensores a uma distância que você conheça. :wink:

@roboticasee,

last year I helped a friend with a project that measured the speed of spheres.
It's in Portuguese, but nothing that a click on the goolge option
"translate to....." does not resolve

"https://labdegaragem.com/forum/topics/analisador-de-colis-es?commentId=6223006%3AComment%3A886796"

Muito obrigado pelas sugestões

ESSE É O CÓDIGO

#include "Ultrasonic.h"
#define trig1 2
#define echo1 3
#define trig2 4
#define echo2 5

unsigned long start = 0;
unsigned long finish = 0;
int carroPassouStart = 0;
int carroPassouFinish = 0;
double tempo;
double velocidade;
double distanciaSensores = 0.50;
double fatorParaSegundos = 1000;

Ultrasonic ultra1(2 , 3);
Ultrasonic ultra2(4 , 5);

void setup() {
Serial.begin(9600); //inicia a porta serial
pinMode(trig1, OUTPUT); // define o pino 2 como saida (envia)
pinMode(echo1, INPUT); // define o pino 3 como entrada (recebe)
pinMode(trig2, OUTPUT); // define o pino 4 como saida (envia)
pinMode(echo2, INPUT); // define o pino 5 como entrada (recebe)
}

void loop() {

//seta o pino 2 com um pulso baixo "LOW" ou desligado ou ainda 0
// digitalWrite(trig1, LOW);
// delay de 10 microssegundos
//delayMicroseconds(10);
//seta o pino 2 com pulso alto "HIGH" ou ligado ou ainda 1
//digitalWrite(trig1, HIGH);
//delay de 100 microssegundos
//delayMicroseconds(100);
//seta o pino 2 com pulso baixo novamente
//digitalWrite(trig1, LOW);

//seta o pino 4 com um pulso baixo "LOW" ou desligado ou ainda 0
// digitalWrite(trig2, LOW);
// delay de 10 microssegundos
//delayMicroseconds(10);
//seta o pino 4 com pulso alto "HIGH" ou ligado ou ainda 1
//digitalWrite(trig2, HIGH);
//delay de 100 microssegundos
//delayMicroseconds(100);
//seta o pino 4 com pulso baixo novamente
//digitalWrite(trig2, LOW);

if(ultra1.Ranging(cm) < 10){
start = millis();
carroPassouStart = 1;
//Serial.println ("aqui1");
}

if(ultra2.Ranging(cm) < 10){
finish = millis();
carroPassouFinish = 1;
//Serial.println ("aqui");
}

if((carroPassouStart && carroPassouFinish )&& finish > start){
tempo = ((finish - start)/ fatorParaSegundos);
velocidade = ((distanciaSensores / tempo) * 3.6); //velocidade em km/h
Serial.print ("Tempo: ");
Serial.print (tempo);
Serial.println ("s");
//delay(1000);
Serial.print ("Velocidade: ");
Serial.print (velocidade);
Serial.println ("km/h");
//delay(1000);
carroPassouStart = 0;
carroPassouFinish = 0;
}

}

Estou utilizando esse código acima, mas na hora de copilar, ele apresenta erro. a mensagem de erro é a seguinte: class Ultrasonic' has no member named 'Ranging'
Não consigo resolver esse erro

O comando que você utilizou não é compatível com a biblioteca que você está usando.
Ao invés de:

ultra1.Ranging(cm) < 10

deveria ser

ultra1.read(CM) < 10

Mesma coisa vale para o ultra2, naturalmente.

Obrigado pela ajuda, vou testar

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.