donmike25

test code motor n IR

Jan 31st, 2016
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. #define leftp 7
  2. #define leftn 4
  3. #define rightp 3
  4. #define rightn 2
  5. #define speedleft 5
  6. #define speedright 6
  7. #define surfaceSense1 9
  8. #define surfaceSense2 8
  9.  
  10. //Function prototypes
  11.  
  12. void straight(int speedpwm);
  13. void left(int speedpwm);
  14. void right(int speedpwm);
  15. void reverse(int speedpwm);
  16. void brake(int speedpwm);
  17. void readSurface();
  18.  
  19. void setup() {
  20. Serial.begin(9600);
  21. pinMode(leftp, OUTPUT);
  22. pinMode(leftn, OUTPUT);
  23. pinMode(rightp, OUTPUT);
  24. pinMode(rightn, OUTPUT);
  25. pinMode(speedleft, OUTPUT);
  26. pinMode(speedright, OUTPUT);
  27. pinMode(surfaceSense1, INPUT);
  28. pinMode(surfaceSense2, INPUT);
  29.  
  30.  
  31. void straight(int speedpwm){
  32. digitalWrite(leftp, HIGH);
  33. digitalWrite(leftn, LOW);
  34. digitalWrite(rightp, HIGH);
  35. digitalWrite(rightn, LOW);
  36. analogWrite(speedleft, speedpwm);
  37. analogWrite(speedright, speedpwm);
  38. }
  39.  
  40. void left(int speedpwm){
  41. digitalWrite(leftp, LOW);
  42. digitalWrite(leftn, LOW);
  43. digitalWrite(rightp, HIGH);
  44. digitalWrite(rightn, LOW);
  45. analogWrite(speedleft, speedpwm);
  46. analogWrite(speedright, speedpwm);
  47. }
  48.  
  49. void right(int speedpwm){
  50. digitalWrite(leftp, HIGH);
  51. digitalWrite(leftn, LOW);
  52. digitalWrite(rightp, LOW);
  53. digitalWrite(rightn, LOW);
  54. analogWrite(speedleft, speedpwm);
  55. analogWrite(speedright, speedpwm);
  56. }
  57.  
  58. void reverse(int speedpwm){
  59. digitalWrite(leftp, LOW);
  60. digitalWrite(leftn, HIGH);
  61. digitalWrite(rightp, LOW);
  62. digitalWrite(rightn, HIGH);
  63. analogWrite(speedleft, speedpwm);
  64. analogWrite(speedright, speedpwm);
  65. }
  66. void brake(int speedpwm){
  67. digitalWrite(leftp, LOW);
  68. digitalWrite(leftn, LOW);
  69. digitalWrite(rightp, LOW);
  70. digitalWrite(rightn, LOW);
  71. analogWrite(speedleft, speedpwm);
  72. analogWrite(speedright, speedpwm);
  73. }
  74.  
  75. void readSurface(){
  76. //For left sensor
  77. if(digitalRead(surfaceSense1) == HIGH){
  78. //Check if both sensor was triggered simultaneously
  79. if(digitalRead(surfaceSense2) == HIGH){
  80. //Robot backs up for a bit before making appropriate turning
  81. reverse(255);
  82. delay(1000);
  83. }
  84. //Here the robot avoids the line from the left
  85. right(255);
  86. delay(500);
  87. //Keeps executing until the line was cleared from sensor
  88. readSurface();
  89. }
  90. //For right sensor
  91. else if(digitalRead(surfaceSense2) == HIGH){
  92. //Check if both sensor was triggered simultaneously
  93. if(digitalRead(surfaceSense2) == HIGH){
  94. //Robot backs up for a bit before making appropriate turning
  95. reverse(255);
  96. delay(1000);
  97. }
  98. //Here the robot avoids the line from the right
  99. left(255);
  100. delay(500);
  101. //Keeps executing until the line was cleared from sensor
  102. readSurface();
  103. }
Advertisement
Add Comment
Please, Sign In to add comment