Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.26 KB | None | 0 0
  1. #include "NXCDefs.h"
  2. int obj, x;                    //declaramos las varibales
  3. sub sincronizacion()           //Subrutina de sincronización
  4. {
  5.     SetSensorTouch(IN_1);        //declaración del sensor de contacto(puerto 1)
  6.     OnFwd(OUT_BC,75);            //avanzar motores B y C con una potencia de 75%
  7.     until(Sensor(IN_1)==1);      //hasta que el sensor de contacto sea presionado
  8.     Off(OUT_BC);                 //apagar motres B y C
  9.     OnFwd(OUT_BC,75);            //Avanzar motores B y C con una potencia de 75%
  10.     until(Sensor(IN_1)==0);      //hasta que el sensor de contacto sea despulsado
  11.     Off(OUT_BC);                 //apagar motres B y C
  12.     OnFwd(OUT_B,75);             //Avanzar motor B con una pontencia de 75%
  13.     until(Sensor(IN_1)==1);      //hasta que que el sensor de contacto sea presionado
  14.     Off(OUT_B);                  //apagar B
  15.     RotateMotor(OUT_B,75,180);   //Girar el motor B en un ángulo de 180° con una potencia de 75
  16.     OnFwd(OUT_C,75);             //Avanzar motor C con potencia 75%
  17.     until(Sensor(IN_1)==1);      //hasta que el sensor de contacto sea pulsado nuevamente
  18.     Off(OUT_C);                  //Apagar motor C
  19. }
  20. task proceso_1()              //sub tarea o proceso 1
  21. {
  22.     obj=0;                    //Variable con su valor
  23.     sincronizacion();         //llamamos a la sub sincronización
  24.     while(1==1)               //inicio de bucle infinito
  25.     {
  26.         OnFwd(OUT_BC,75);     //avanzar motores B y C
  27.         until(obj==1);        //hasta que la variable sea cambiada en el proceso 2
  28.         x=Random(100);        //añadimos una variable y tendrá como valor un número aleatorio del 0 al 100
  29.         if(x>50)              //abrimos una sentencia condiciona if-else en donde si la variable "x" es mayor a 50...
  30.         {
  31.             OnFwd(OUT_B,75);  //Avanzar motor B con potencia de 75%
  32.             OnRev(OUT_C,75);  //Retroceder motor C con potencia 75%
  33.             Wait(3000);       //durante tres segundos
  34.             Off(OUT_BC);      //Apagar motores B y C
  35.         }
  36.         else                  //En caso contrario a la condición planteada anteriormente
  37.         {
  38.             OnFwd(OUT_C,75);  //Avanzar motor C con 75% de potencia
  39.             OnRev(OUT_B,75);  //Retroceder motor C con potencia 75%
  40.             Wait(3000);       //durante tres segundos
  41.             Off(OUT_BC);      //apagar motores B y C
  42.         }
  43.         obj=0;                //Asignación de la variable
  44.         sincronizacion();     //llamado de la subrutina
  45.     }
  46. }
  47. task proceso_2()              //Proceso o tarea 2
  48. {
  49.     while(1==1)               //Bucle infinito
  50.     {
  51.         SetSensorLowspeed(IN_4);  //Declaración de sensores de contacto y ultrasónico
  52.         SetSensorTouch(IN_1);
  53.         OnFwd(OUT_A,20);
  54.         Wait(1500);
  55.         Off(OUT_A);
  56.         RotateMotor(OUT_A,35,-120);
  57.         while(SensorUS(IN_4)>50)    //Mientras el sensor de ultrasonido no detecte un obstáculo
  58.         {
  59.             RotateMotor(OUT_A,35,70);        //hará esto
  60.             RotateMotor(OUT_A,35,-70);
  61.         }
  62.         obj=1;
  63.         RotateMotor(OUT_A,20,100);
  64.         while(obj==1)
  65.         {
  66.             Wait(1000);
  67.         }
  68.  
  69.     }
  70. }
  71. task main()
  72. {
  73.     Precedes(proceso_1,proceso_2); //juntaremos los procesos 1 y 2
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement