daily pastebin goal
24%
SHARE
TWEET

Untitled

lcordero Aug 2nd, 2013 208 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <PS2X_lib.h>  //for v1.6
  2.  
  3. PS2X ps2x; // create PS2 Controller Class
  4.  
  5. //right now, the library does NOT support hot pluggable controllers, meaning
  6. //you must always either restart your Arduino after you conect the controller,
  7. //or call config_gamepad(pins) again after connecting the controller.
  8. int error = 0;
  9. byte type = 0;
  10. byte vibrate = 0;
  11.  int a = 0;
  12. //Arduino PWM Speed Control for DFRobot Motor Shield (default pins)
  13. int E1 = 3;
  14. int M1 = 12;
  15. int E2 = 11;
  16. int M2 = 13;
  17. int lmotor = 0;
  18. int rmotor = 0;
  19.  int led = 10;
  20. int light = 2;
  21. void setup()
  22. {
  23.   Serial.begin(57600);
  24.  
  25.   // set pin modes for DFRobot Motor Shield. These are the modes for both motors. For example: M1 is for motor 1 and M2 is for motor 2.
  26.   pinMode(M1, OUTPUT);
  27.   pinMode(M2, OUTPUT);
  28.  
  29.  pinMode(led, OUTPUT);
  30.   pinMode(light, OUTPUT);
  31.   error = ps2x.config_gamepad(7,6,5,4, true, true);   //setup pins and settings:  GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error
  32.  
  33.   if(error == 0)
  34.   {
  35.     Serial.println("Found Controller, configured successful");
  36.     Serial.println("Try out all the buttons, X will vibrate the controller, faster as you press harder;");
  37.     Serial.println("holding L1 or R1 will print out the analog stick values.");
  38.     Serial.println("Go to www.billporter.info for updates and to report bugs.");
  39.    }
  40.    else if(error == 1)
  41.    {
  42.      Serial.println("No controller found, check wiring, see readme.txt to enable debug. visit www.billporter.info for troubleshooting tips");
  43.    }
  44.    else if(error == 2)
  45.    {
  46.      Serial.println("Controller found but not accepting commands. see readme.txt to enable debug. Visit www.billporter.info for troubleshooting tips");
  47.    }
  48.    else if(error == 3)
  49.    {
  50.      Serial.println("Controller refusing to enter Pressures mode, may not support it. ");
  51.    }
  52.  
  53.    type = ps2x.readType();
  54.    if (type != 1)
  55.    {
  56.      Serial.println("warning: DualShock Controller Not Found!");
  57.    }
  58. }
  59.  
  60. void loop()
  61. {
  62.  if(error == 1) //skip loop if no controller found
  63.   return;
  64.  if (type == 1)
  65.  {
  66.     ps2x.read_gamepad(false, vibrate);          //read controller and set large motor to spin at 'vibrate' speed
  67.  if (ps2x.Button(PSB_PINK)){                    // On this line I just added another button that I can use on my controller to turn on muy led lights. The color of the button is pink so that is what it's called.
  68.    if( a == 0)
  69.      a = 1;
  70.   else
  71.     a = 0;}
  72.    
  73.     if (a == 0){
  74.   digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  75.   digitalWrite(light, LOW);    // turn the LED off by making the voltage LOW
  76.     }
  77.   else    
  78.    {
  79.   digitalWrite(led, HIGH);    // turn the LED off by making the voltage LOW
  80.   digitalWrite(light, HIGH);    // turn the LED off by making the voltage LOW
  81.     }
  82.    
  83.    
  84.    lmotor = 0;
  85.    if (ps2x.Button(PSB_L1))  // this is the left motor speed. 255 is the top speed that the tank goes forward for the left motor. The -255 is the top speed that the tank goes backwards.
  86.                              // it is the same way with the right motor. It works the same way that the right motor works.
  87.      lmotor = 255;
  88.    if (ps2x.Button(PSB_L2))
  89.      lmotor = -255;
  90.  
  91.    rmotor = 0;
  92.    if (ps2x.Button(PSB_R1))
  93.      rmotor = 255;
  94.    if (ps2x.Button(PSB_R2))
  95.      rmotor = -255;
  96.  
  97.  }
  98.  else
  99.  {
  100.    lmotor = 0;
  101.    rmotor = 0;
  102.  }
  103.  
  104.  // update motors
  105.    if (lmotor < 0)
  106.    {
  107.     digitalWrite(M1, LOW);
  108.     analogWrite(E1, -lmotor);   //PWM Speed Control
  109.    }
  110.    else
  111.    {
  112.     digitalWrite(M1, HIGH);
  113.     analogWrite(E1, lmotor);   //PWM Speed Control
  114.    }
  115.  
  116.    if (rmotor < 0)
  117.    {
  118.     digitalWrite(M2, LOW);
  119.     analogWrite(E2, -rmotor);   //PWM Speed Control
  120.    }
  121.    else
  122.    {
  123.     digitalWrite(M2, HIGH);
  124.     analogWrite(E2, rmotor);   //PWM Speed Control
  125.    }
  126.                                // the HIGH means that the motors are at full speed and it is what makes it move. The low means that the motors are stopped.
  127.  delay(30);                    // I added the led code in this so that I can get everything on my tank working together.
  128. }
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
 
Top