Advertisement
xDefo

G alpha 0.1

May 16th, 2017
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.91 KB | None | 0 0
  1. #pragma config(Sensor, S1,     gyroscope,      sensorEV3_Gyro, modeEV3Gyro_RateAndAngle)
  2. #pragma config(Sensor, S2,     colorSensor,    sensorEV3_Color, modeEV3Color_Color)
  3. #pragma config(Sensor, S3,     frontSensor,    sensorEV3_Ultrasonic)
  4. #pragma config(Sensor, S4,     leftSensor,     sensorEV3_Ultrasonic)
  5. #pragma config(Motor,  motorA,          leftMotor,     tmotorEV3_Large, PIDControl, driveLeft, encoder)
  6. #pragma config(Motor,  motorB,          rightMotor,    tmotorEV3_Large, PIDControl, driveRight, encoder)
  7. #pragma config(Motor,  motorC,          clawLifter,    tmotorEV3_Large, PIDControl, encoder)
  8. #pragma config(Motor,  motorD,          claw,          tmotorEV3_Medium, PIDControl, encoder)
  9. //*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//
  10. //Il nero lo scarta, il rosso lo mette nella chest a DX e il blu a SX.
  11.  
  12. const int moveforwardVelocity=20;
  13.  
  14. const int claw_Velocity=100;
  15. const int claw_PositionOpen=3*360;
  16. const int claw_PositionClose=-3*360;
  17.  
  18. const int clawLifter_Velocity=-50;
  19. const int clawLifter_PositionUp=360;
  20. const int clawLifter_PositionDown=360;
  21.  
  22. const int Object_distance = 7;
  23.  
  24. const int Blue = 5;
  25. const int Red = 3;
  26.  
  27. int gradiRotazione=0;
  28. int distanzaPrimaFila = 30;
  29. int tragitto=1;
  30. int oggettipresi=0;
  31.  
  32.  
  33. /*void moveForward(int v){
  34. motor[motorA]=v;
  35. motor[motorB]=v;
  36. wait1Msec(1);
  37. }*/
  38.  
  39. void movement (int V1, int V2 ){ // Funzione potenza hai motori;
  40.     motor[motorA]=V1;
  41.     motor[motorB]=V2;
  42.     wait1Msec(1);
  43. }
  44.  
  45. //Funzione che rileva la presenza di oggetti sulla sinistra confrontando la distanza con parametro passato alla funzione
  46. bool objectDetectedLeft(int a){
  47.     if(getUSDistance(leftSensor)<=a)
  48.     {
  49.         return true;
  50.     }
  51.     else return false;
  52. }
  53.  
  54. //Funzione che rileva la presenza di oggetti  di fronte confrontando la distanza con parametro passato alla funzione
  55. bool objectDetectedFront(int a){
  56.  
  57.  
  58.  
  59.     if(getUSDistance(frontSensor)<=a){
  60.         return true ;
  61.     }
  62.     else return false;
  63. }
  64.  
  65. int color()
  66. {
  67.     if(getColorName(colorSensor)==colorBlack)
  68.     {
  69.         return 0;
  70.     }
  71.     else if(getColorName(colorSensor)==colorBlue)
  72.     {
  73.         return 1;
  74.     }
  75.     return 2;
  76.     //Funzione che rileva il colore dell' oggetto preso
  77. }
  78.  
  79.  
  80. void openClaw (){ //Funzione apri pinza
  81.     moveMotorTarget(claw,claw_PositionOpen,claw_Velocity);
  82.     sleep(500);
  83. }
  84.  
  85. void closeClaw(){ //Funzione chiudi pinza
  86.     moveMotorTarget(claw,claw_PositionClose,-claw_Velocity);
  87.     sleep(500);
  88. }
  89.  
  90. void liftClaw(){ //Alza braccio
  91.     moveMotorTarget(clawLifter,clawLifter_PositionUp+10,clawLifter_Velocity);
  92.     sleep(500);
  93. }
  94.  
  95. void fallClaw(){ //Abbassa braccio
  96.     moveMotorTarget(clawLifter,clawLifter_PositionDown,-clawLifter_Velocity);
  97.     sleep(500);
  98. }
  99.  
  100.  
  101. void initialize(){// Funzione di inizializazione
  102.     liftClaw();
  103.     openClaw();
  104. }
  105.  
  106.  
  107. void liftObject(){ // Funzione prendi oggetto
  108.     movement(0,0);
  109.     fallClaw();
  110.     delay(1000);
  111.     closeClaw();
  112.     delay(1000);
  113.     liftClaw();
  114.  
  115. }
  116.  
  117. void releaseObject(){//Rilascia oggetto
  118.     movement(0,0);
  119.     fallClaw();
  120.     openClaw();
  121.     liftClaw();
  122. }
  123.  
  124.  
  125.  
  126. void turn(char a, int gradi)//Funzione gira di 90°
  127. {
  128.     resetGyro(gyroscope);
  129.     switch (a)
  130.     {
  131.     case 'L':
  132.         resetGyro(gyroscope);
  133.         while (getGyroDegrees(gyroscope)<gradi)
  134.         {
  135.             motor[motorA]=10;
  136.             motor[motorB]=-10;
  137.             wait1Msec(1);
  138.         }
  139.         break;
  140.     case 'R' :
  141.         resetGyro(gyroscope);
  142.         while (getGyroDegrees(gyroscope)>-gradi )
  143.         {
  144.             motor[motorA]=-10;
  145.             motor[motorB]=10;
  146.             wait1Msec(1);
  147.         }
  148.         break;
  149.  
  150.     }
  151. }
  152.  
  153. void allinea()
  154. {
  155.     while(!objectDetectedFront(20))
  156.     {
  157.         turn('L',3);
  158.         gradiRotazione += 3;
  159.         sleep(500);
  160.     }
  161. }
  162.  void dropObject_right(int a)//Porta l'ogetto alla cassa
  163. {
  164.     switch (a)
  165.     {
  166.         case 0:
  167.            movement(-50,-50);
  168.            sleep(1000);
  169.            movement(0,0);
  170.            turn('L',(180-gradiRotazione));
  171.            gradiRotazione += 180-gradiRotazione;
  172.            while(!objectDetectedFront(5))
  173.                 {
  174.                    movement(50,50);
  175.                 }
  176.            movement(0,0);
  177.            openClaw();
  178.            closeClaw();
  179.            movement(-10,-10);
  180.            sleep(250);
  181.            turn('R', gradiRotazione);
  182.            tragitto=1;
  183.            oggettipresi++;
  184.             break;
  185.  
  186.         case 1:
  187.            movement(-100,-100);
  188.            sleep(1000);
  189.            movement(0,0);
  190.            turn('R',gradiRotazione);
  191.            while(!objectDetectedFront(5))
  192.                 {
  193.                    movement(50,50);
  194.                 }
  195.            movement(0,0);
  196.            openClaw();
  197.            closeClaw();
  198.            tragitto=-1;
  199.            oggettipresi++;
  200.           break;
  201.  
  202.     }
  203.  
  204. }
  205.  
  206. void dropObject_left(){
  207. }
  208.  
  209. void routine(int n)// Funzione cerca oggetto è afferra; Warka
  210. {
  211.     while(!objectDetectedLeft(distanzaPrimaFila)) //Mentre il LeftSensor non rileva oggetti va avanti
  212.     {
  213.         movement(n*moveforwardVelocity,n*moveforwardVelocity);
  214.     }
  215.     distanzaPrimaFila = getUSDistance(leftSensor)+1;
  216.     movement(0,0);//spegnimento motori
  217.     turn('L',90);//gira a sinistra di 90°
  218.     gradiRotazione += 90;
  219.     allinea();
  220.     sleep(500);
  221.     movement(0,0);//spegnimento motori
  222.     while(!objectDetectedFront(Object_distance))//Mentre la distanza è maggiore di Object_distance va avanti
  223.     {
  224.         movement(10,10);
  225.         if(objectDetectedFront(Object_distance))
  226.         {
  227.             movement(0,0);
  228.             liftObject();
  229.             break;
  230.         }
  231.     }
  232. }
  233.  
  234. void Program1(){
  235.     routine(tragitto);
  236.     movement(0,0);
  237.     dropObject_right(color());
  238. }
  239.  
  240. void Program2()
  241. {
  242.    
  243.    
  244. }
  245.  
  246. task main(){
  247.     initialize();
  248.   while(oggettipresi < 6){Program1();}
  249.   oggettipresi=0;
  250.  
  251.   while(oggettipresi < 6){Program2();}
  252.  
  253.  
  254. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement