Tenho um projeto da faculdade onde um imã irá percorrer um tubo de pvc com comprimento de 500mm gerando tensão em 3 bobinas (nas extremidades e no meio), irei utilizar um sensor magnético ou pegar a tensão gerada pelas bobinas nas extremidades, para calcular a velocidade média pelo arduino UNO e mostrar em um display 16x2 (PC1602F) ou um display touch screen (ILI9325). Sou iniciante em programação, e preciso muito dessa programação urgente! Por favor me ajudem, segue abaixo o que tenho até o momento de programação!
-------------------------------------------------------------------------------------------------------------
unsigned long Inicio=0; // variavel interia positiva para guardar o inicio da medida
unsigned long finish=0; // variavel interia positiva para guardar o fim da medida
float distance=10; // variavel floatpoint para informar a distancia para medida
// informar aqui a distancia entre os sensores em cm
float interval; // variavel floatpoint para guardar o calculo ente inicio e fim
float velocity; // variavel floatpoint para guardar guardar o calculo da velocidade
int done=1; // Flag para informar que foi feita a medida
int FlagInicio = 0; // Flag para informar que foi medido o tempo inicial
int FlagFinal = 0; // Flag para informar que foi medido o tempo final
int startPin = 4; // pino de entrada para sensor de inicio
int finishPin = 8; // pino de entrada para sensor de inicio
// -----------------------------------------------
void setup()
{
Serial.begin(9600); // Inicialização da serial
pinMode(startPin, INPUT_PULLUP); // definição do pino startPin como entrada e pull-up resistor
pinMode(finishPin, INPUT_PULLUP); // definição do pino finishPin como entrada e pull-up resistor
Serial.println("Medida de velocidad de projetil "); // Msg inicial
}
// -----------------------------------------------
void loop()
{
while(digitalRead(startPin) == LOW) // Faça se pino startPin esta obstruido
{
if (FlagInicio == 0) // Faça se ainda não tem medida inicial
{
Inicio = millis(); // Salva medida inicial em miliseg
Serial.println("Inicio "); // Informa que tem medida inicial
// Serial.println(Inicio); // informa valor da medida inicial
FlagInicio = 1; // informa que já tem medida inicial
}
}
while(digitalRead(finishPin) == LOW) // Faça se pino finishPin esta obstruido
{
if (FlagInicio == 1) // Faça se tem medida inicial
{
if (FlagFinal == 0) // Faça se ainda não tem medida final
{
finish = millis(); // Salva medida final em miliseg
Serial.print("Final "); // Informa que tem medida final
// Serial.println(finish); // informa valor da medida final
Serial.println(" "); // new line
done = 0; // informa que tudo foi medido
FlagFinal = 1; // informa que já tem medida final
}
}
}
while(!done) // fa;ca se tudo foi medido
{
interval = float(finish-Inicio); // calcula a diferença entre o inicio e o final em miliseg
velocity = (distance/interval)*60*60; // Divide distancia pelo tempo e multiplica por 3600(miliseg --> minuto
Serial.println("Velocidade do projetil "); // Msg
Serial.print(velocity,4); // Imprime velocidade em cm/min com 4 casas decimais
Serial.println(" cm/min"); // msg sufixo
Serial.println("-----------------------"); // separador de msg
done = 1; // prepara para nova medida
FlagInicio = 0; // prepara para nova medida
FlagFinal = 0; // prepara para nova medida
finish = 0; // prepara para nova medida
Inicio = 0; // prepara para nova medida
}
}