RobinBrusbo

ArduinoRobotNa17c

May 13th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. int maxDistanceBeforeTurn;
  2. int lampa = 1;
  3. int echoPin = 7;
  4. int trigPin = 1;
  5. int duration;
  6. int lampa1 = 13;
  7. int lampa2 = 8;
  8. int lampa3 = 4;
  9. int lampa4 = 3;
  10. int lampa5 = 2;
  11. int leftMotor = 12;
  12. int rightMotor = 11;
  13. int speed = 255;
  14. float turnTime = 5;
  15. float carWidth = 10;
  16. float turningRadius = 20;
  17. float angle = 3.1415/2;
  18. int lampDelay = 20;
  19.  
  20. void setup(){
  21. Serial.begin(9600);
  22. pinMode(echoPin, INPUT);
  23. pinMode(trigPin, OUTPUT);
  24. pinMode(lampa1, OUTPUT);
  25. pinMode(lampa2, OUTPUT);
  26. pinMode(lampa3, OUTPUT);
  27. pinMode(lampa4, OUTPUT);
  28. pinMode(lampa5, OUTPUT);
  29. pinMode(leftMotor, OUTPUT);
  30. pinMode(rightMotor, OUTPUT);
  31. }
  32.  
  33. void blink(int lampa){
  34. switch (lampa){
  35. case 1:
  36. digitalWrite(lampa1, HIGH);
  37. delay(lampDelay);
  38. digitalWrite(lampa1, LOW);
  39. case 2:
  40. digitalWrite(lampa2, HIGH);
  41. delay(lampDelay);
  42. digitalWrite(lampa2, LOW);
  43. case 3:
  44. digitalWrite(lampa3, HIGH);
  45. delay(lampDelay);
  46. digitalWrite(lampa3, LOW);
  47. case 4:
  48. digitalWrite(lampa4, HIGH);
  49. delay(lampDelay);
  50. digitalWrite(lampa4, LOW);
  51. case 5:
  52. digitalWrite(lampa5, HIGH);
  53. delay(lampDelay);
  54. digitalWrite(lampa5, LOW);
  55. case 6:
  56. digitalWrite(lampa4, HIGH);
  57. delay(lampDelay);
  58. digitalWrite(lampa4, LOW);
  59. case 7:
  60. digitalWrite(lampa3, HIGH);
  61. delay(lampDelay);
  62. digitalWrite(lampa3, LOW);
  63. case 8:
  64. digitalWrite(lampa2, HIGH);
  65. delay(lampDelay);
  66. digitalWrite(lampa2, LOW);
  67. }
  68. }
  69.  
  70. void motorON(int speed){
  71. analogWrite(leftMotor, speed);
  72. analogWrite(rightMotor, speed);
  73. }
  74.  
  75. void motorOFF(){
  76. analogWrite(leftMotor, 0);
  77. analogWrite(rightMotor, 0);
  78. }
  79.  
  80. float calculateSpeed(float carWidth, float turningRadius, float angle){
  81. return (turningRadius*angle*255)/((turningRadius+carWidth)*angle);
  82. }
  83.  
  84. void turnLeftAngle(){
  85. motorOFF();
  86. digitalWrite(rightMotor, 255);
  87. digitalWrite(leftMotor, calculateSpeed(carWidth, turningRadius, angle));
  88. delay(turnTime*1000);
  89. motorOFF();
  90. }
  91.  
  92. float getDistance(){
  93. digitalWrite(trigPin, HIGH);
  94. delayMicroseconds(10);
  95. digitalWrite(trigPin, LOW);
  96. duration = pulseIn(echoPin, HIGH);
  97. return duration / 58;
  98. }
  99.  
  100. void loop(){
  101. motorON(speed);
  102. float distance = getDistance();
  103. Serial.println(distance);
  104. if (distance < maxDistanceBeforeTurn) turnLeftAngle();
  105. if (lampa != 8){
  106. blink(lampa);
  107. lampa++;
  108. } else if (lampa == 8){
  109. blink(lampa);
  110. lampa = 1;
  111. }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment