Advertisement
rafaelnfs

Proyecto_Tiro_Parabolico

May 7th, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Creado por Rafael Osorio, para proyecto de fisica de tiro parabolico
  3. Mediremos los tiempos en que son activados los sensores para que
  4. con dicho dato podamos calcular velocidad ( distancia / tiempo)
  5. para poder determinar alcanze del proyectil.
  6.  
  7.  
  8. */
  9.  
  10.  
  11.  
  12.  
  13. // librerias necesarias para la utilizacion de pantalla
  14.  
  15. #include<Wire.h>
  16. #include<LiquidCrystal_I2C.h>
  17.  
  18. // creamos una instancia de la libreria
  19. // para poder ver datos en pantalla
  20. LiquidCrystal_I2C lcd(0x27,16,2);
  21.  
  22. byte pinR = 4;
  23.  
  24. // variables para almacenar los tiempos en cuanto se dispara
  25. // la interrupcions
  26. volatile unsigned long t1 = 0;
  27. volatile unsigned long t2 = 0;
  28.  
  29. // variable para resultado final
  30. volatile float t3 = 0;
  31.  
  32. int sensor1 = 2; // pines a sensores
  33. int sensor2 = 3;
  34.  
  35. void setup() {
  36.  
  37. // habilitados la salida serial para depurar algo
  38.   Serial.begin(115200);
  39.  
  40.   // configuracion de entradas y salidas
  41.     pinMode(sensor1,INPUT);
  42.       pinMode(sensor2,INPUT);
  43.         pinMode(pinR,INPUT);
  44.        
  45.         //  interrupciones del arduino para los sensores
  46.       attachInterrupt(digitalPinToInterrupt(sensor1), s1, HIGH); //interruptor FIN tubo Pin(2)
  47.         attachInterrupt(digitalPinToInterrupt(sensor2), s2, HIGH); // interruptor INICIO tubo Pin(3)
  48.    
  49. lcd.init();
  50.   lcd.backlight();
  51.     lcd.setCursor(3,0);
  52.       lcd.print("Bienvenido");
  53.         lcd.setCursor(0,1);
  54.           lcd.print("Tiro Parabolico");
  55.          
  56.        
  57.      
  58.  
  59. }
  60.  
  61. void loop(){
  62.  
  63. // solo para resetear el dato interno (sin borrado de pantalla)
  64.  bool estado = digitalRead(pinR);
  65.  if(estado){
  66.   resetear();
  67.  }
  68.  
  69. // si la variable a cambiado llamamos a la funcion
  70. //para que modifique el dato en pantalla
  71.     if(t3!=0){
  72.        msj();
  73.     }
  74.    
  75.    // calculo del tiempo final
  76. t3 = (t2-t1);
  77.  t3 /=1000;
  78.  
  79. }
  80.  
  81. //funcion para visualizar en pantalla el dato.
  82. void msj(){
  83.   lcd.clear();  
  84.     lcd.setCursor(0,0);
  85.       lcd.print("Tiempo Sensado: ");
  86.         lcd.setCursor(0,1);
  87.           lcd.print(t3);
  88.           delay(1000);
  89.  
  90. }
  91.  
  92.  
  93. //funciones a llamar cuando se activo un sensor
  94. void s2(){
  95.   // primer interruptor
  96.   t2 = millis();
  97.  
  98.  
  99. //funciones a llamar cuando se activo un sensor
  100. void s1(){
  101.   //segundo interruptor
  102.   t1  = millis();
  103.  
  104.      
  105.    
  106. }
  107.  
  108.  
  109. }
  110. //para borrar dato interno de la variable y no resetear el arduino
  111. float resetear(){
  112.   t3 = 0;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement