Advertisement
Guest User

Untitled

a guest
Aug 28th, 2014
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. #pragma config(Sensor, S1, touch, sensorTouch)
  2. #pragma config(Sensor, S3, ultrasonic, sensorSONAR)
  3. #pragma config(Sensor, S4, light, sensorLightActive)
  4. #pragma config(Motor, motorB, Right_Motor, tmotorNXT, PIDControl, encoder)
  5. #pragma config(Motor, motorC, Left_Motor, tmotorNXT, PIDControl, encoder)
  6. //*!!Code automatically generated by 'ROBOTC' configuration wizard !!*//
  7.  
  8. //Global Variables
  9. int touchSensor;
  10. int ultraSensor;
  11. int lightSensor;
  12. //sensor task
  13. task sensor ()
  14. {
  15. touchSensor = SensorValue[touch];
  16. ultraSensor = SensorValue[ultrasonic];
  17. lightSensor = SensorValue[light];
  18. wait1Msec(100);
  19. }
  20. //straight function
  21.  
  22. void straight (int distRef, int power)
  23. {
  24. int whlDia = 2.2;
  25. int distance =0;
  26. int rgtMtrEnc = 0;
  27. int disRef = 20;
  28.  
  29. motor[Right_Motor] = power;
  30. motor[Left_Motor] = power;
  31.  
  32. nMotorEncoder[motorB] = 0;
  33.  
  34. distance = 0;
  35. while (distance < disRef)
  36. {
  37. rgtMtrEnc = nMotorEncoder[Right_Motor];
  38. distance = (rgtMtrEnc/360)*(whlDia*3.14);
  39. wait1Msec(50);
  40. }
  41. motor[Right_Motor] = 0;
  42. motor[Left_Motor] = 0;
  43. return;
  44. }
  45.  
  46. //Function turn
  47. void turn(int angle, int power)
  48. {
  49.  
  50. nMotorEncoder[Left_Motor] = 0;
  51. nMotorEncoder[Right_Motor] = 0;
  52.  
  53. int rgtMtrDir;
  54. int lftMtrDir;
  55. int turnRef;
  56. int turnEnc;
  57.  
  58. switch (angle)
  59. {
  60. case 180:
  61. rgtMtrDir = -1;
  62. lftMtrDir = 1;
  63. turnRef = 500;
  64. break;
  65. case -180:
  66. rgtMtrDir = 1;
  67. lftMtrDir = -1;
  68. turnRef = 500;
  69. break;
  70. case 90:
  71. rgtMtrDir = -1;
  72. lftMtrDir = 1;
  73. turnRef = 500;
  74. break;
  75. case 45:
  76. rgtMtrDir = -1;
  77. lftMtrDir = 1;
  78. turnRef = 500;
  79. break;
  80. case 20:
  81. rgtMtrDir = -1;
  82. lftMtrDir = 1;
  83. turnRef = 500;
  84. break;
  85. case -90:
  86. rgtMtrDir = 1;
  87. lftMtrDir = -1;
  88. turnRef = 500;
  89. break;
  90. case -45:
  91. rgtMtrDir = 1;
  92. lftMtrDir = -1;
  93. turnRef = 500;
  94. break;
  95. case -20:
  96. rgtMtrDir = 1;
  97. lftMtrDir = -1;
  98. turnRef = 500;
  99. break;
  100. default:
  101. rgtMtrDir = -1;
  102. lftMtrDir = 1;
  103. turnRef = 500;
  104. break;
  105. }
  106. nMotorEncoder[Left_Motor] = 0;
  107. nMotorEncoder[Right_Motor] = 0;
  108. motor[Left_Motor] = lftMtrDir*power;
  109. motor[Right_Motor] = rgtMtrDir*power;
  110. turnEnc= 0;
  111. while (turnEnc > turnRef)
  112. {
  113. turnEnc = abs(nMotorEncoder[Left_Motor])+abs(nMotorEncoder[Right_Motor]);
  114. wait1Msec(50);
  115. }
  116. motor[Left_Motor] = 0;
  117. motor[Right_Motor] = 0;
  118.  
  119. }
  120.  
  121.  
  122. task main()
  123. {
  124. int numberSeg = 3;
  125.  
  126. int actions[9] = (0,0,0,20,0,75,0,90,50);
  127. int power;
  128. int angle;
  129. int distance;
  130.  
  131. startTask (sensor);
  132.  
  133. displayString(0, "Follow Track");
  134. displayString(1, "LMtr-C,RMtr-B");
  135. displayString(2, "Tch-1, US-3");
  136. displayString(3, "Lgt-4");
  137. displayString(6, "Press ORG");
  138. displayString(7, "To Cont");
  139. while (nNxtButtonPressed !=3)
  140. {
  141. wait1Msec(100);
  142. }
  143. eraseDisplay();
  144. displayCenteredBigTextLine(3, "GO");
  145. playTone(440, 50);
  146. numberSeg = numberSeg*3;
  147. for (int i = 0; i < numberSeg; i=i+3)
  148. {
  149. if (actions[i] != 0)
  150. {
  151. straight (actions[i],actions[i+2]);
  152. }
  153. }
  154. playImmediateTone(440, 50);
  155. wait1Msec(500);
  156.  
  157. int whlDia = 2.2;
  158. int distance =0;
  159. int rgtMtrEnc = 0;
  160. int disRef = 20;
  161.  
  162.  
  163. turn(180,45);
  164. playImmediateTone(440, 50);
  165. wait1Msec(500);
  166. while (true)
  167. wait1Msec(100);
  168.  
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement