SHARE
TWEET

Xbox Motor Driver

a guest Sep 30th, 2014 284 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  Example sketch for the Xbox Wireless Reciver library - developed by Kristian Lauszus
  3.  It supports up to four controllers wirelessly
  4.  For more information see the blog post: http://blog.tkjelectronics.dk/2012/12/xbox-360-receiver-added-to-the-usb-host-library/ or
  5.  send me an e-mail:  kristianl@tkjelectronics.com
  6.  */
  7.  
  8. #include <XBOXRECV.h>
  9. // Satisfy IDE, which only needs to see the include statment in the ino.
  10. #ifdef dobogusinclude
  11. #include <spi4teensy3.h>
  12. #endif
  13.  
  14. USB Usb;
  15. XBOXRECV Xbox(&Usb);
  16.  
  17. //Left Motor
  18. int PWMPin = 6;
  19. int PWMPin2 = 11;
  20.  
  21. //Right Motor
  22. int PWMPin3 = 3;
  23. int PWMPin4 = 5;
  24.  
  25. int wheelLock = 14;
  26.  
  27. int enable1 = 15;
  28. int enable2 = 16;
  29. int enable3 = 17;
  30. int enable4 = 18;
  31.  
  32. int wheelLockEnable = 0;
  33.  
  34. int ControllerConnected = A5;
  35.  
  36. void setup() {
  37.   Serial.begin(115200);
  38.   while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
  39.   if (Usb.Init() == -1) {
  40.     Serial.print(F("\r\nOSC did not start"));
  41.     while (1); //halt
  42.   }
  43.   Serial.print(F("\r\nXbox Wireless Receiver Library Started"));
  44.  
  45.   pinMode(PWMPin, OUTPUT);
  46.   pinMode(PWMPin2, OUTPUT);
  47.   pinMode(PWMPin3, OUTPUT);
  48.   pinMode(PWMPin4, OUTPUT);
  49.  
  50.   pinMode(enable1, OUTPUT);
  51.   pinMode(enable2, OUTPUT);
  52.   pinMode(enable3, OUTPUT);
  53.   pinMode(enable4, OUTPUT);
  54.  
  55.   pinMode(wheelLock, INPUT);
  56.  
  57.   pinMode(ControllerConnected, OUTPUT);
  58. }
  59. void loop() {
  60.   Usb.Task();
  61.   if (Xbox.XboxReceiverConnected) {
  62.     for (uint8_t i = 0; i < 4; i++) {
  63.       if (Xbox.Xbox360Connected[i]) {
  64.        
  65.         digitalWrite(ControllerConnected, HIGH); // light up an LED showing the controller is connected
  66.         //the LED responds appropriately, but changes in bightess once controller data is received
  67.        
  68.         if (Xbox.getButtonPress(L2, i) || Xbox.getButtonPress(R2, i)) {
  69.           Serial.print("L2: ");
  70.           Serial.print(Xbox.getButtonPress(L2, i));
  71.           Serial.print("\tR2: ");
  72.           Serial.println(Xbox.getButtonPress(R2, i));
  73.           //Xbox.setRumbleOn(Xbox.getButtonPress(L2, i), Xbox.getButtonPress(R2, i), i);
  74.         }
  75.  
  76.         if (Xbox.getAnalogHat(LeftHatX, i) > 7500 || Xbox.getAnalogHat(LeftHatX, i) < -7500 || Xbox.getAnalogHat(LeftHatY, i) > 7500 || Xbox.getAnalogHat(LeftHatY, i) < -7500 || Xbox.getAnalogHat(RightHatX, i) > 7500 || Xbox.getAnalogHat(RightHatX, i) < -7500 || Xbox.getAnalogHat(RightHatY, i) > 7500 || Xbox.getAnalogHat(RightHatY, i) < -7500) {
  77.           if (Xbox.getAnalogHat(LeftHatX, i) > 7500 || Xbox.getAnalogHat(LeftHatX, i) < -7500) {
  78.             Serial.print(F("LeftHatX: "));
  79.             Serial.print(Xbox.getAnalogHat(LeftHatX, i));
  80.             Serial.print("\t");
  81.           }
  82.           if (Xbox.getAnalogHat(LeftHatY, i) > 7500 || Xbox.getAnalogHat(LeftHatY, i) < -7500) {
  83.             Serial.print(F("LeftHatY: "));
  84.             Serial.print(Xbox.getAnalogHat(LeftHatY, i));
  85.             Serial.print("\t");
  86.           }
  87.           if (Xbox.getAnalogHat(RightHatX, i) > 7500 || Xbox.getAnalogHat(RightHatX, i) < -7500) {
  88.             Serial.print(F("RightHatX: "));
  89.             Serial.print(Xbox.getAnalogHat(RightHatX, i));
  90.             Serial.print("\t");
  91.           }
  92.           if (Xbox.getAnalogHat(RightHatY, i) > 7500 || Xbox.getAnalogHat(RightHatY, i) < -7500) {
  93.             Serial.print(F("RightHatY: "));
  94.             Serial.print(Xbox.getAnalogHat(RightHatY, i));
  95.           }
  96.           Serial.println();
  97.         }
  98.  
  99.         if (Xbox.getButtonClick(UP, i)) {
  100.           Xbox.setLedOn(LED1, i);
  101.           Serial.println(F("Up"));
  102.         }
  103.         if (Xbox.getButtonClick(DOWN, i)) {
  104.           Xbox.setLedOn(LED4, i);
  105.           Serial.println(F("Down"));
  106.         }
  107.         if (Xbox.getButtonClick(LEFT, i)) {
  108.           Xbox.setLedOn(LED3, i);
  109.           Serial.println(F("Left"));
  110.         }
  111.         if (Xbox.getButtonClick(RIGHT, i)) {
  112.           Xbox.setLedOn(LED2, i);
  113.           Serial.println(F("Right"));
  114.         }
  115.  
  116.         if (Xbox.getButtonClick(START, i)) {
  117.           Xbox.setLedMode(ALTERNATING, i);
  118.           Serial.println(F("Start"));
  119.         }
  120.         if (Xbox.getButtonClick(BACK, i)) {
  121.           Xbox.setLedBlink(ALL, i);
  122.           Serial.println(F("Back"));
  123.         }
  124.         if (Xbox.getButtonClick(L3, i))
  125.           Serial.println(F("L3"));
  126.         if (Xbox.getButtonClick(R3, i))
  127.           Serial.println(F("R3"));
  128.  
  129.         if (Xbox.getButtonClick(L1, i))
  130.           Serial.println(F("L1"));
  131.         if (Xbox.getButtonClick(R1, i))
  132.           Serial.println(F("R1"));
  133.         if (Xbox.getButtonClick(XBOX, i)) {
  134.           Xbox.setLedMode(ROTATING, i);
  135.           Serial.print(F("Xbox (Battery: "));
  136.           Serial.print(Xbox.getBatteryLevel(i)); // The battery level in the range 0-3
  137.           Serial.println(F(")"));
  138.         }
  139.         if (Xbox.getButtonClick(SYNC, i)) {
  140.           Serial.println(F("Sync"));
  141.           Xbox.disconnect(i);
  142.         }
  143.  
  144.         if (Xbox.getButtonClick(A, i))
  145.           Serial.println(F("A"));
  146.         if (Xbox.getButtonClick(B, i))
  147.           Serial.println(F("B"));
  148.         if (Xbox.getButtonClick(X, i))
  149.           Serial.println(F("X"));
  150.         if (Xbox.getButtonClick(Y, i))
  151.           Serial.println(F("Y"));
  152.                  
  153.   //Code used for motor Drivers. 4 Enable pins and 2 drive functions  
  154.  
  155.   wheelLockEnable = digitalRead(wheelLock);
  156.  
  157.   if (wheelLockEnable == HIGH) {  
  158.    
  159.     digitalWrite(enable1, HIGH);
  160.     digitalWrite(enable2, HIGH);            
  161.     digitalWrite(enable3, HIGH);
  162.     digitalWrite(enable4, HIGH);
  163.     //turns ON individual H-Bridge chips
  164.                                             //this chunk needs to run when the controller IS connected
  165.         if (!Xbox.getButtonPress(Y)) {
  166.           ForwardTankDrive ();
  167.         }                            
  168.              
  169.         if(Xbox.getButtonPress(Y)) {
  170.           ReverseTankDrive ();
  171.         }
  172.              
  173.         }//Wheel lock enable
  174.       }//end controller connected
  175.      
  176.       else {
  177.         digitalWrite(enable1, LOW);
  178.         digitalWrite(enable2, LOW);
  179.         digitalWrite(enable3, LOW);    //these lines need to be written to LOW when the controller is not connected
  180.         digitalWrite(enable4, LOW);
  181.        
  182.         digitalWrite(ControllerConnected, LOW);
  183.         //without these write statements, my HIGH values are 5 volts
  184.         //while these are here, the HIGH values are only 0.6 volts
  185.        
  186.       }//end else for when controller is not connected
  187.     }//end for
  188.   }//end receiver
  189. }//end loop
  190.  
  191. void ForwardTankDrive () {
  192.  
  193.     analogWrite(PWMPin2, 0);
  194.     analogWrite(PWMPin, Xbox.getButtonPress(R2));
  195.     //left trigger
  196.        
  197.     analogWrite(PWMPin4, 0);
  198.     analogWrite(PWMPin3, Xbox.getButtonPress(L2));
  199.     //right trigger
  200. }
  201.  
  202. void ReverseTankDrive () {
  203.  
  204.     analogWrite(PWMPin, 0);
  205.     analogWrite(PWMPin2, Xbox.getButtonPress(R2));
  206.     //left trigger
  207.        
  208.     analogWrite(PWMPin3, 0);
  209.     analogWrite(PWMPin4, Xbox.getButtonPress(L2));
  210.     //right trigger
  211. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top