phillip_bourdon234

TaserBot_CAR

Mar 14th, 2020 (edited)
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.20 KB | None | 0 0
  1. // A video demonstration of this project can be found here: https://bit.ly/3fuLpY6
  2.  
  3. #include <nRF24L01.h>
  4. #include <printf.h>
  5. #include <RF24.h>
  6. #include <RF24_config.h>
  7. #include <SPI.h>
  8.  
  9. RF24 radio(7, 8);
  10. const byte address[6] = "111111";
  11. int States[3]; // States[0] = X_JOY
  12.                // States[1] = Y_JOY
  13.                // States[2] = Button
  14.  
  15. int taser = 4; // relay module
  16.  
  17. // rear motors
  18. int enableMotor1 = 10;
  19. int enableMotor2 = 9;
  20. int rotate1ClockWise = 22;
  21. int rotate1CounterClockWise = 23;
  22. int rotate2ClockWise = 40;
  23. int rotate2CounterClockWise = 41;
  24.  
  25. // front motors
  26. int enableMotor3 = 11;
  27. int enableMotor4 = 6;
  28. int rotate3ClockWise = 24;
  29. int rotate3CounterClockWise = 25;
  30. int rotate4ClockWise = 42;
  31. int rotate4CounterClockWise = 43;
  32.  
  33. void setup()
  34. {
  35.   radio.begin();
  36.   radio.openReadingPipe(0, address);
  37.   radio.setPALevel(RF24_PA_HIGH);
  38.   pinMode(enableMotor1, OUTPUT);
  39.   pinMode(enableMotor2, OUTPUT);
  40.   pinMode(enableMotor3, OUTPUT);
  41.   pinMode(enableMotor4, OUTPUT);
  42.   pinMode(rotate1ClockWise, OUTPUT);
  43.   pinMode(rotate2ClockWise, OUTPUT);
  44.   pinMode(rotate3ClockWise, OUTPUT);
  45.   pinMode(rotate4ClockWise, OUTPUT);
  46.   pinMode(rotate1CounterClockWise, OUTPUT);
  47.   pinMode(rotate2CounterClockWise, OUTPUT);
  48.   pinMode(rotate3CounterClockWise, OUTPUT);
  49.   pinMode(rotate4CounterClockWise, OUTPUT);
  50.   pinMode(taser, OUTPUT);
  51.   digitalWrite(taser, LOW);
  52. }
  53.  
  54. void loop()
  55. {
  56.   delay(5);  
  57.    
  58.   radio.startListening();
  59.   if ( radio.available()) {
  60.     while (radio.available()) {
  61.       radio.read(&States, sizeof(States));
  62.     }
  63.   }
  64.  
  65.   if(States[2] == 0)
  66.     digitalWrite(taser, HIGH);
  67.   else
  68.     digitalWrite(taser, LOW);
  69.  
  70.   if(States[1] <= 490)
  71.   {
  72.     int motorPowerForward = map(States[1], 0, 490, 255, 0);
  73.     int turningValRight = map(States[0], 490  , 1023, 0, 255);
  74.     int turningValLeft = map(States[0], 0, 490, 255, 0);
  75.     if(States[0] > 490) {
  76.       int motorPowerNet = motorPowerForward - turningValRight;
  77.       if(motorPowerNet < 0)
  78.         motorPowerNet = 0;
  79.       analogWrite(enableMotor1, motorPowerNet);
  80.       analogWrite(enableMotor2, motorPowerForward);
  81.       analogWrite(enableMotor3, motorPowerForward);
  82.       analogWrite(enableMotor4, motorPowerNet);
  83.     }
  84.     else {
  85.       int motorPowerNet = motorPowerForward - turningValLeft;
  86.       if(motorPowerNet < 0)
  87.         motorPowerNet = 0;
  88.       analogWrite(enableMotor1, motorPowerForward);
  89.       analogWrite(enableMotor2, motorPowerNet);
  90.       analogWrite(enableMotor3, motorPowerNet);
  91.       analogWrite(enableMotor4, motorPowerForward);
  92.     }
  93.     spinMotors(1,0); // reverse
  94.   }
  95.   else if(States[1] >= 512)
  96.   {
  97.     int motorPowerReverse = map(States[1], 512, 1023, 0, 255);
  98.     int turningValRight = map(States[0], 490  , 1023, 0, 255);
  99.     int turningValLeft = map(States[0], 0, 490, 255, 0);
  100.     if(States[0] > 490) {
  101.       int motorPowerNet = motorPowerReverse - turningValRight;
  102.       if(motorPowerNet < 0)
  103.         motorPowerNet = 0;
  104.       analogWrite(enableMotor1, motorPowerNet);
  105.       analogWrite(enableMotor2, motorPowerReverse);
  106.       analogWrite(enableMotor3, motorPowerReverse);
  107.       analogWrite(enableMotor4, motorPowerNet);
  108.     }
  109.     else {
  110.       int motorPowerNet = motorPowerReverse - turningValLeft;
  111.       if(motorPowerNet < 0)
  112.         motorPowerNet = 0;
  113.       analogWrite(enableMotor1, motorPowerReverse);
  114.       analogWrite(enableMotor2, motorPowerNet);
  115.       analogWrite(enableMotor3, motorPowerNet);
  116.       analogWrite(enableMotor4, motorPowerReverse);
  117.     }
  118.     spinMotors(0,1); // forward
  119.   }
  120.   else
  121.   {
  122.     turnMotorsOff();
  123.   }
  124. }
  125.  
  126. void turnMotorsOff()
  127. {  
  128.   digitalWrite(enableMotor1, LOW);
  129.   digitalWrite(enableMotor2, LOW);
  130.   digitalWrite(enableMotor3, LOW);
  131.   digitalWrite(enableMotor4, LOW);
  132. }
  133.  
  134. void spinMotors(int boolValOne, int boolValTwo)
  135. {
  136.   digitalWrite(rotate1CounterClockWise, boolValOne);
  137.   digitalWrite(rotate1ClockWise, boolValTwo);
  138.   digitalWrite(rotate2CounterClockWise, boolValOne);
  139.   digitalWrite(rotate2ClockWise, boolValTwo);
  140.   digitalWrite(rotate3CounterClockWise, boolValOne);
  141.   digitalWrite(rotate3ClockWise, boolValTwo);
  142.   digitalWrite(rotate4CounterClockWise, boolValOne);
  143.   digitalWrite(rotate4ClockWise, boolValTwo);
  144. }
Add Comment
Please, Sign In to add comment