Apparcane

Black Line GPT

Apr 28th, 2023 (edited)
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. // определяем пины для датчиков
  2. const int SENSOR_1_PIN = A0;
  3. const int SENSOR_2_PIN = A1;
  4. const int SENSOR_3_PIN = A2;
  5. const int SENSOR_4_PIN = A3;
  6. const int SENSOR_5_PIN = A4;
  7.  
  8. // определяем пины для двигателей
  9. // 0 - скорость
  10. const int MOTOR_LEFT_0_PIN = 5;
  11. const int MOTOR_LEFT_1_PIN = 6;
  12. const int MOTOR_LEFT_2_PIN = 7;
  13. const int MOTOR_RIGHT_0_PIN = 10;
  14. const int MOTOR_RIGHT_1_PIN = 8;
  15. const int MOTOR_RIGHT_2_PIN = 9;
  16.  
  17. // определяем скорость двигателей
  18. const int MOTOR_SPEED = 50;
  19. const float MOTOR_SPEED_RATE = 0.13;
  20. const int MOTOR_SPEED_HARD_TURN = 60;
  21. const int MOTOR_SPEED_LIGHT_TURN = MOTOR_SPEED + 5;
  22.  
  23. // считываем состояние датчиков
  24. int sensor1 = 0;
  25. int sensor2 = 0;
  26. int sensor3 = 0;
  27. int sensor4 = 0;
  28. int sensor5 = 0;
  29.  
  30.  
  31. void Forward() {
  32. //Left
  33. analogWrite(MOTOR_LEFT_0_PIN, MOTOR_SPEED);
  34.  
  35. //Right
  36. analogWrite(MOTOR_RIGHT_0_PIN, MOTOR_SPEED);
  37. Serial.println("Forward");
  38. }
  39.  
  40. int RightCircle() {
  41. //Left
  42. analogWrite(MOTOR_LEFT_0_PIN, MOTOR_SPEED_LIGHT_TURN);
  43.  
  44. //Right
  45. analogWrite(MOTOR_RIGHT_0_PIN, MOTOR_SPEED * MOTOR_SPEED_RATE);
  46.  
  47. Serial.println("RightCircle");
  48. }
  49.  
  50. int LeftCircle() {
  51. //Left
  52. analogWrite(MOTOR_LEFT_0_PIN, MOTOR_SPEED * MOTOR_SPEED_RATE);
  53.  
  54. //Right
  55. analogWrite(MOTOR_RIGHT_0_PIN, MOTOR_SPEED_LIGHT_TURN);
  56.  
  57. Serial.println("LeftCircle");
  58. }
  59.  
  60. int Right() {
  61. //Left
  62. analogWrite(MOTOR_LEFT_0_PIN, MOTOR_SPEED_HARD_TURN);
  63.  
  64. //Right
  65. analogWrite(MOTOR_RIGHT_0_PIN, 0);
  66.  
  67. Serial.println("Right");
  68. }
  69.  
  70. int Left() {
  71. //Left
  72. analogWrite(MOTOR_LEFT_0_PIN, 0);
  73.  
  74. //Right
  75. analogWrite(MOTOR_RIGHT_0_PIN, MOTOR_SPEED_HARD_TURN);
  76.  
  77. Serial.println("Left");
  78. }
  79.  
  80. void ReadSensors() {
  81. // считываем состояние датчиков
  82. sensor1 = digitalRead(SENSOR_1_PIN);
  83. sensor2 = digitalRead(SENSOR_2_PIN);
  84. sensor3 = digitalRead(SENSOR_3_PIN);
  85. sensor4 = digitalRead(SENSOR_4_PIN);
  86. sensor5 = digitalRead(SENSOR_5_PIN);
  87. }
  88.  
  89. int config(int sensor1, int sensor2, int sensor3, int sensor4, int sensor5) {
  90. sensor1 = sensor1 * -1;
  91.  
  92. sensor2 = sensor2 * -1;
  93.  
  94. int position = sensor1 + sensor2 + sensor4 + sensor5;
  95.  
  96. Serial.println(position);
  97.  
  98. return position;
  99. }
  100.  
  101. void setup() {
  102. // настраиваем пины для датчиков
  103. pinMode(SENSOR_1_PIN, INPUT);
  104. pinMode(SENSOR_2_PIN, INPUT);
  105. pinMode(SENSOR_3_PIN, INPUT);
  106. pinMode(SENSOR_4_PIN, INPUT);
  107. pinMode(SENSOR_5_PIN, INPUT);
  108.  
  109. // настраиваем пины для двигателей
  110. pinMode(MOTOR_LEFT_0_PIN, OUTPUT);
  111. pinMode(MOTOR_LEFT_1_PIN, OUTPUT);
  112. pinMode(MOTOR_LEFT_2_PIN, OUTPUT);
  113. pinMode(MOTOR_RIGHT_0_PIN, OUTPUT);
  114. pinMode(MOTOR_RIGHT_1_PIN, OUTPUT);
  115. pinMode(MOTOR_RIGHT_2_PIN, OUTPUT);
  116.  
  117. // начинаем движение вперед
  118. analogWrite(MOTOR_LEFT_0_PIN, MOTOR_SPEED);
  119. digitalWrite(MOTOR_LEFT_1_PIN, LOW);
  120. digitalWrite(MOTOR_LEFT_2_PIN, HIGH);
  121.  
  122. analogWrite(MOTOR_RIGHT_0_PIN, MOTOR_SPEED);
  123. digitalWrite(MOTOR_RIGHT_1_PIN, HIGH);
  124. digitalWrite(MOTOR_RIGHT_2_PIN, LOW);
  125.  
  126. Serial.begin(9600);
  127. }
  128.  
  129. void loop() {
  130.  
  131. ReadSensors();
  132.  
  133. int position = config(sensor1, sensor2, sensor3, sensor4, sensor5)
  134.  
  135. if (position == 0) {
  136. Forward();
  137. }
  138. else if (position == 2) {
  139. Left();
  140. }
  141. else if (position == 1) {
  142. LeftCircle();
  143. }
  144. else if (position == -1) {
  145. RightCircle();
  146. }
  147. else if (position == -2) {
  148. Right();
  149. }
  150. else {
  151. Forward();
  152. }
  153. //delay(100);
  154. }
Advertisement
Add Comment
Please, Sign In to add comment