Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "NXCDefs.h"
- int obj, x; //declaramos las varibales
- sub sincronizacion() //Subrutina de sincronización
- {
- SetSensorTouch(IN_1); //declaración del sensor de contacto(puerto 1)
- OnFwd(OUT_BC,75); //avanzar motores B y C con una potencia de 75%
- until(Sensor(IN_1)==1); //hasta que el sensor de contacto sea presionado
- Off(OUT_BC); //apagar motres B y C
- OnFwd(OUT_BC,75); //Avanzar motores B y C con una potencia de 75%
- until(Sensor(IN_1)==0); //hasta que el sensor de contacto sea despulsado
- Off(OUT_BC); //apagar motres B y C
- OnFwd(OUT_B,75); //Avanzar motor B con una pontencia de 75%
- until(Sensor(IN_1)==1); //hasta que que el sensor de contacto sea presionado
- Off(OUT_B); //apagar B
- RotateMotor(OUT_B,75,180); //Girar el motor B en un ángulo de 180° con una potencia de 75
- OnFwd(OUT_C,75); //Avanzar motor C con potencia 75%
- until(Sensor(IN_1)==1); //hasta que el sensor de contacto sea pulsado nuevamente
- Off(OUT_C); //Apagar motor C
- }
- task proceso_1() //sub tarea o proceso 1
- {
- obj=0; //Variable con su valor
- sincronizacion(); //llamamos a la sub sincronización
- while(1==1) //inicio de bucle infinito
- {
- OnFwd(OUT_BC,75); //avanzar motores B y C
- until(obj==1); //hasta que la variable sea cambiada en el proceso 2
- x=Random(100); //añadimos una variable y tendrá como valor un número aleatorio del 0 al 100
- if(x>50) //abrimos una sentencia condiciona if-else en donde si la variable "x" es mayor a 50...
- {
- OnFwd(OUT_B,75); //Avanzar motor B con potencia de 75%
- OnRev(OUT_C,75); //Retroceder motor C con potencia 75%
- Wait(3000); //durante tres segundos
- Off(OUT_BC); //Apagar motores B y C
- }
- else //En caso contrario a la condición planteada anteriormente
- {
- OnFwd(OUT_C,75); //Avanzar motor C con 75% de potencia
- OnRev(OUT_B,75); //Retroceder motor C con potencia 75%
- Wait(3000); //durante tres segundos
- Off(OUT_BC); //apagar motores B y C
- }
- obj=0; //Asignación de la variable
- sincronizacion(); //llamado de la subrutina
- }
- }
- task proceso_2() //Proceso o tarea 2
- {
- while(1==1) //Bucle infinito
- {
- SetSensorLowspeed(IN_4); //Declaración de sensores de contacto y ultrasónico
- SetSensorTouch(IN_1);
- OnFwd(OUT_A,20);
- Wait(1500);
- Off(OUT_A);
- RotateMotor(OUT_A,35,-120);
- while(SensorUS(IN_4)>50) //Mientras el sensor de ultrasonido no detecte un obstáculo
- {
- RotateMotor(OUT_A,35,70); //hará esto
- RotateMotor(OUT_A,35,-70);
- }
- obj=1;
- RotateMotor(OUT_A,20,100);
- while(obj==1)
- {
- Wait(1000);
- }
- }
- }
- task main()
- {
- Precedes(proceso_1,proceso_2); //juntaremos los procesos 1 y 2
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement