Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. #include <Zumo32U4.h>
  2.  
  3. #define numberOfLineSensors 3
  4.  
  5. Zumo32U4Motors motors;
  6. Zumo32U4LineSensors lineSensors;
  7. Zumo32U4ProximitySensors proxSensors;
  8. Zumo32U4Buzzer buzzer;
  9.  
  10. int motorSpeed = 100;
  11. int lineSensorValues[numberOfLineSensors];
  12. int lightThreshold = 1000;
  13. int numberFound = 0;
  14. int roomNumber = 0;
  15.  
  16. bool searching = false;
  17. bool waiting = false;
  18.  
  19. void setup() {
  20. lineSensors.initThreeSensors();
  21. proxSensors.initThreeSensors();
  22. Serial1.begin(9600);
  23. delay(2000);
  24. }
  25.  
  26. void loop() {
  27. do {
  28. autoMode();
  29. } while (waiting == false);
  30. }
  31.  
  32. void autoMode() {
  33. lineSensors.read(lineSensorValues);
  34. motors.setSpeeds(motorSpeed, motorSpeed);
  35. if (lineSensorValues[0] > lightThreshold && lineSensorValues[numberOfLineSensors - 1] > lightThreshold)
  36. {
  37. delay(100);
  38. motors.setSpeeds(0, 0);
  39. waiting = true;
  40. Serial1.print("HIT WALL\n");
  41. }
  42. else if (lineSensorValues[0] > lightThreshold)
  43. {
  44. motors.setSpeeds(motorSpeed, -motorSpeed);
  45. }
  46. else if (lineSensorValues[2] > lightThreshold)
  47. {
  48. motors.setSpeeds(-motorSpeed, motorSpeed);
  49. }
  50. do {
  51. checkForInput();
  52. } while (waiting == true);
  53. }
  54.  
  55. void checkForInput() {
  56. if (Serial1.available() > 0) {
  57. char inChar = (char)Serial1.read();
  58. switch (inChar) {
  59. case 'z': // Stop
  60. waiting = true;
  61. motors.setSpeeds(0, 0);
  62. Serial1.print("STOP\n");
  63. break;
  64. case 'x': // 180 Spin
  65. motors.setSpeeds(-100, 100);
  66. delay(1850);
  67. waiting = false;
  68. break;
  69. case 'w': // Forward
  70. waiting = false;
  71. motors.setSpeeds(100, 100);
  72. break;
  73. case 's': // Back
  74. waiting = false;
  75. motors.setSpeeds(-100, -100);
  76. break;
  77. case 'd': // Turn Right
  78. motors.setSpeeds(-100, -100);
  79. delay(250);
  80. turnRight();
  81. break;
  82. case 'a': // Turn Left
  83. motors.setSpeeds(-100, -100);
  84. delay(250);
  85. turnLeft();
  86. break;
  87. case 'q': // Search Left
  88. Serial1.print("SEARCHING\n");
  89. turnLeft();
  90. searchingRoom();
  91. break;
  92. case 'e': // Search Right
  93. Serial1.print("SEARCHING\n");
  94. turnRight();
  95. searchingRoom();
  96. break;
  97. } // end switch
  98. } // end if
  99. }
  100.  
  101. void turnLeft() {
  102. motors.setSpeeds(100, -100);
  103. delay(850);
  104. waiting = false;
  105. }
  106.  
  107. void turnRight() {
  108. motors.setSpeeds(-100, 100);
  109. delay(850);
  110. waiting = false;
  111. }
  112.  
  113. void searchingRoom() {
  114. searching = true;
  115. int i = 0;
  116. while (searching == true) {
  117. turnLeft();
  118. i++;
  119. if (proxSensors.countsFrontWithLeftLeds() > 5 ) {
  120. buzzer.playNote(NOTE_A(4), 250, 8);
  121. roomNumber += 1;
  122. numberFound += 1;
  123. Serial1.print(roomNumber);
  124. while (i < 3) {
  125. i++;
  126. turnLeft();
  127. }
  128. searching = false;
  129. }
  130. else if (i > 3) {
  131. searching = false;
  132. }
  133. }
  134. waiting = false;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement