Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // measures velocity of projectiles
- // baseado no código postado por Bruno Godoi Eilliar
- 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
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement