Advertisement
RuiViana

Untitled

Jun 1st, 2015
572
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1. // measures velocity of projectiles
  2. // baseado no código postado por Bruno Godoi Eilliar
  3.  
  4. unsigned long Inicio=0; // variavel interia positiva para guardar o inicio da medida
  5. unsigned long finish=0; // variavel interia positiva para guardar o fim da medida
  6. float distance=10; // variavel floatpoint para informar a distancia para medida
  7. // informar aqui a distancia entre os sensores em cm
  8. float interval; // variavel floatpoint para guardar o calculo ente inicio e fim
  9. float velocity; // variavel floatpoint para guardar guardar o calculo da velocidade
  10.  
  11. int done=1; // Flag para informar que foi feita a medida
  12.  
  13. int FlagInicio = 0; // Flag para informar que foi medido o tempo inicial
  14. int FlagFinal = 0; // Flag para informar que foi medido o tempo final
  15.  
  16. int startPin = 4; // pino de entrada para sensor de inicio
  17. int finishPin = 8; // pino de entrada para sensor de inicio
  18. // -----------------------------------------------
  19. void setup()
  20. {
  21. Serial.begin(9600); // Inicialização da serial
  22. pinMode(startPin, INPUT_PULLUP); // definição do pino startPin como entrada e pull-up resistor
  23. pinMode(finishPin, INPUT_PULLUP); // definição do pino finishPin como entrada e pull-up resistor
  24.  
  25. Serial.println("Medida de velocidad de projetil "); // Msg inicial
  26. }
  27. // -----------------------------------------------
  28. void loop()
  29. {
  30. while(digitalRead(startPin) == LOW) // Faça se pino startPin esta obstruido
  31. {
  32. if (FlagInicio == 0) // Faça se ainda não tem medida inicial
  33. {
  34. Inicio = millis(); // Salva medida inicial em miliseg
  35. Serial.println("Inicio "); // Informa que tem medida inicial
  36. // Serial.println(Inicio); // informa valor da medida inicial
  37. FlagInicio = 1; // informa que já tem medida inicial
  38. }
  39. }
  40.  
  41. while(digitalRead(finishPin) == LOW) // Faça se pino finishPin esta obstruido
  42. {
  43. if (FlagInicio == 1) // Faça se tem medida inicial
  44. {
  45. if (FlagFinal == 0) // Faça se ainda não tem medida final
  46. {
  47. finish = millis(); // Salva medida final em miliseg
  48. Serial.print("Final "); // Informa que tem medida final
  49. // Serial.println(finish); // informa valor da medida final
  50. Serial.println(" "); // new line
  51. done = 0; // informa que tudo foi medido
  52. FlagFinal = 1; // informa que já tem medida final
  53. }
  54. }
  55. }
  56. while(!done) // fa;ca se tudo foi medido
  57. {
  58. interval = float(finish-Inicio); // calcula a diferença entre o inicio e o final em miliseg
  59. velocity = (distance/interval)*60*60; // Divide distancia pelo tempo e multiplica por 3600(miliseg --> minuto
  60. Serial.println("Velocidade do projetil "); // Msg
  61. Serial.print(velocity,4); // Imprime velocidade em cm/min com 4 casas decimais
  62. Serial.println(" cm/min"); // msg sufixo
  63. Serial.println("-----------------------"); // separador de msg
  64. done = 1; // prepara para nova medida
  65. FlagInicio = 0; // prepara para nova medida
  66. FlagFinal = 0; // prepara para nova medida
  67. finish = 0; // prepara para nova medida
  68. Inicio = 0; // prepara para nova medida
  69. }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement