Denmark, Cophenhagen
Offline
Newbie
Karma: 0
Posts: 10
|
 |
« on: January 05, 2013, 06:01:46 pm » |
Hello out there, i have a project where i need to make a robot work whit the PS2 controller i have tried doing it whit the nrf24l01 but that did not work at all  so after some head scratching I came op whit the idea that i just could make a wireless PS2 controller but then i watched the interweb and did not find any tutorials so do any of you know how I could make it wireless?? 
|
|
|
|
|
Logged
|
|
|
|
|
Queens, New York
Offline
Edison Member
Karma: 29
Posts: 1574
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
|
 |
« Reply #1 on: January 05, 2013, 06:40:00 pm » |
I made my robot work from a wireless PS2 control. It's actually very simple. I'll try to post some pictures and maybe a video.
|
|
|
|
|
Logged
|
UNO, MEGA, NANO, 4x4 keypad, micro servos, RF transceivers, bluetooth, ultrasonic sensor, 20x4 I2C LCD, 3.2 TFT touch screen, L298N Dual motor driver, Voice Recognition 15W, Gameduino
Arduino Tutorials, coming soon.
"If your doing nothing, it does not mean your lazy, it just means your open for anything that suits you" - Unknown
|
|
|
|
Queens, New York
Offline
Edison Member
Karma: 29
Posts: 1574
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
|
 |
« Reply #2 on: January 05, 2013, 06:57:07 pm » |
Here is the connector and wiring configuration. Sorry they are so big. I used the PS2X Library here http://www.billporter.info/2010/06/05/playstation-2-controller-arduino-library-v1-0/ Follow it step by step. If you want, I will send you my .h and .cpp files along with an example program. But go to that site and try it. Make sure you put the files in the correct place, otherwise you will get errors.
|
|
|
|
« Last Edit: January 05, 2013, 07:09:09 pm by HazardsMind »
|
Logged
|
UNO, MEGA, NANO, 4x4 keypad, micro servos, RF transceivers, bluetooth, ultrasonic sensor, 20x4 I2C LCD, 3.2 TFT touch screen, L298N Dual motor driver, Voice Recognition 15W, Gameduino
Arduino Tutorials, coming soon.
"If your doing nothing, it does not mean your lazy, it just means your open for anything that suits you" - Unknown
|
|
|
|
Denmark, Cophenhagen
Offline
Newbie
Karma: 0
Posts: 10
|
 |
« Reply #3 on: January 06, 2013, 12:29:19 pm » |
looks cool but do you know the range of it and can i increase it?? I have already made made most of my code and i am pretty sure on it will work the only thing where i have a problem is when I try to use PWM whit my four motors. Have you tried it??
|
|
|
|
|
Logged
|
|
|
|
|
Queens, New York
Offline
Edison Member
Karma: 29
Posts: 1574
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
|
 |
« Reply #4 on: January 06, 2013, 12:38:22 pm » |
Are you using a UNO or Mega? I've done it with 2 PWM motors and 1 regular on/off motor. The range is however far the controller can go, that's it.
|
|
|
|
|
Logged
|
UNO, MEGA, NANO, 4x4 keypad, micro servos, RF transceivers, bluetooth, ultrasonic sensor, 20x4 I2C LCD, 3.2 TFT touch screen, L298N Dual motor driver, Voice Recognition 15W, Gameduino
Arduino Tutorials, coming soon.
"If your doing nothing, it does not mean your lazy, it just means your open for anything that suits you" - Unknown
|
|
|
|
Denmark, Cophenhagen
Offline
Newbie
Karma: 0
Posts: 10
|
 |
« Reply #5 on: January 06, 2013, 01:06:04 pm » |
Are you using a UNO or Mega? I've done it with 2 PWM motors and 1 regular on/off motor. The range is however far the controller can go, that's it.
I am using the UNO and my four motors are connected so the arduino only thinks there is two but if you don't have problem whit sending me the code and the schematics then I would like to have it. 
|
|
|
|
|
Logged
|
|
|
|
|
Queens, New York
Offline
Edison Member
Karma: 29
Posts: 1574
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
|
 |
« Reply #6 on: January 06, 2013, 01:29:39 pm » |
The schematics you can find online, in fact that site shows you how to wire it . As for the code, I can give you a sample, that works for the ps2x library that I have. It will only work if you and I have the same library, otherwise your going to have errors.
|
|
|
|
|
Logged
|
UNO, MEGA, NANO, 4x4 keypad, micro servos, RF transceivers, bluetooth, ultrasonic sensor, 20x4 I2C LCD, 3.2 TFT touch screen, L298N Dual motor driver, Voice Recognition 15W, Gameduino
Arduino Tutorials, coming soon.
"If your doing nothing, it does not mean your lazy, it just means your open for anything that suits you" - Unknown
|
|
|
|
Denmark, Cophenhagen
Offline
Newbie
Karma: 0
Posts: 10
|
 |
« Reply #7 on: January 06, 2013, 02:13:27 pm » |
The schematics you can find online, in fact that site shows you how to wire it . As for the code, I can give you a sample, that works for the ps2x library that I have. It will only work if you and I have the same library, otherwise your going to have errors.
i have the PS2X library from bill porter 
|
|
|
|
|
Logged
|
|
|
|
|
Queens, New York
Offline
Edison Member
Karma: 29
Posts: 1574
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
|
 |
« Reply #8 on: January 06, 2013, 02:21:00 pm » |
Ok, we'll I'm not home right now, but I send it to you later.
|
|
|
|
|
Logged
|
UNO, MEGA, NANO, 4x4 keypad, micro servos, RF transceivers, bluetooth, ultrasonic sensor, 20x4 I2C LCD, 3.2 TFT touch screen, L298N Dual motor driver, Voice Recognition 15W, Gameduino
Arduino Tutorials, coming soon.
"If your doing nothing, it does not mean your lazy, it just means your open for anything that suits you" - Unknown
|
|
|
|
Denmark, Cophenhagen
Offline
Newbie
Karma: 0
Posts: 10
|
 |
« Reply #9 on: January 06, 2013, 02:23:08 pm » |
Ok, we'll I'm not home right now, but I send it to you later.
alright thanks
|
|
|
|
|
Logged
|
|
|
|
|
Queens, New York
Offline
Edison Member
Karma: 29
Posts: 1574
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
|
 |
« Reply #10 on: January 06, 2013, 03:09:35 pm » |
Here is my sample. #include <PS2X_lib.h> //for v1.6
PS2X ps2x; // create PS2 Controller Class //CONTROLLER VOLTAGE MUST BE SET TO 3.3V, NOT 5V
//right now, the library does NOT support hot pluggable controllers, meaning //you must always either restart your Arduino after you conect the controller, //or call config_gamepad(pins) again after connecting the controller. int error = 0; byte type = 0; int temp = 0; byte vibrate = 0;
byte led1 = 8; byte Mopen = 6; byte Mclosed = 5;
void setup(){ Serial.begin(57600);
//CHANGES for v1.6 HERE!!! **************PAY ATTENTION************* pinMode(Mopen, OUTPUT); // Establishes LEDPin as an output so the LED can be seen pinMode(Mclosed, OUTPUT); pinMode(led1, OUTPUT); error = ps2x.config_gamepad(13,11,10,12, true, true); //setup pins and settings: GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error
if(error == 0){ Serial.println("Found Controller, configured successful"); Serial.println("Try out all the buttons, X will vibrate the controller, faster as you press harder;"); Serial.println("holding L1 or R1 will print out the analog stick values."); Serial.println("Go to www.billporter.info for updates and to report bugs."); }
else if(error == 1) Serial.println("No controller found, check wiring, see readme.txt to enable debug. visit www.billporter.info for troubleshooting tips");
else if(error == 2) Serial.println("Controller found but not accepting commands. see readme.txt to enable debug. Visit www.billporter.info for troubleshooting tips");
else if(error == 3) Serial.println("Controller refusing to enter Pressures mode, may not support it. ");
//Serial.print(ps2x.Analog(1), HEX);
type = ps2x.readType(); switch(type) { case 0: Serial.println("Unknown Controller type"); break; case 1: Serial.println("DualShock Controller Found"); break; case 2: Serial.println("GuitarHero Controller Found"); break; }
}
void loop(){ /* You must Read Gamepad to get new values Read GamePad and set vibration values ps2x.read_gamepad(small motor on/off, larger motor strenght from 0-255) if you don't enable the rumble, use ps2x.read_gamepad(); with no values you should call this at least once a second */
if(error == 1) //skip loop if no controller found return;
if(type == 2){ //Guitar Hero Controller }
else { //DualShock Controller
ps2x.read_gamepad(false, vibrate); //read controller and set large motor to spin at 'vibrate' speed
if(ps2x.Button(PSB_START)) digitalWrite(led1, HIGH); else if(ps2x.Button(PSB_SELECT)) digitalWrite(led1, LOW); else { }
//will be TRUE as long as button is pressed Serial.println("Start is being held"); // if(ps2x.Button(PSB_SELECT)) // Serial.println("Select is being held");
if(ps2x.Button(PSB_PAD_UP)) { //will be TRUE as long as button is pressed Serial.print("Up held this hard: "); Serial.println(ps2x.Analog(PSAB_PAD_UP), DEC); } if(ps2x.Button(PSB_PAD_RIGHT)){ Serial.print("Right held this hard: "); Serial.println(ps2x.Analog(PSAB_PAD_RIGHT), DEC); } if(ps2x.Button(PSB_PAD_LEFT)){ Serial.print("LEFT held this hard: "); Serial.println(ps2x.Analog(PSAB_PAD_LEFT), DEC); } if(ps2x.Button(PSB_PAD_DOWN)){ Serial.print("DOWN held this hard: "); Serial.println(ps2x.Analog(PSAB_PAD_DOWN), DEC); }
vibrate = ps2x.Analog(PSAB_BLUE); //this will set the large motor vibrate speed based on //how hard you press the blue (X) button
if (ps2x.NewButtonState()) //will be TRUE if any button changes state (on to off, or off to on) { if(ps2x.Button(PSB_L3)) Serial.println("L3 pressed"); if(ps2x.Button(PSB_R3)) Serial.println("R3 pressed"); if(ps2x.Button(PSB_L2)) Serial.println("L2 pressed"); if(ps2x.Button(PSB_R2)) Serial.println("R2 pressed"); if(ps2x.Button(PSB_GREEN)) Serial.println("Triangle pressed"); }
if(ps2x.ButtonPressed(PSB_RED)) //will be TRUE if button was JUST pressed Serial.println("Circle just pressed");
if(ps2x.ButtonReleased(PSB_PINK)) //will be TRUE if button was JUST released Serial.println("Square just released");
if(ps2x.NewButtonState(PSB_BLUE)) //will be TRUE if button was JUST pressed OR released Serial.println("X just changed");
if(ps2x.Button(PSB_L1)){ digitalWrite(Mopen, HIGH); digitalWrite(Mclosed, LOW); }
else if(ps2x.Button(PSB_R1)){ // print stick values if either is TRUE digitalWrite(Mopen, LOW); digitalWrite(Mclosed, HIGH); } else { digitalWrite(Mopen, LOW); digitalWrite(Mclosed, LOW); }
if(ps2x.Analog(PSS_LY) > 139 && ps2x.Analog(PSS_LY) <= 255){ int speed1 =map(ps2x.Analog(PSS_LY), 140 , 255, 0 , 255); analogWrite(Mopen, speed1); digitalWrite(Mclosed, LOW); }
else if(ps2x.Analog(PSS_LY) >= 0 && ps2x.Analog(PSS_LY) <= 120){ int speed1 =map(ps2x.Analog(PSS_LY),0 , 120, 255 , 0); digitalWrite(Mopen, LOW); analogWrite(Mclosed, speed1); }
else { digitalWrite(Mopen, LOW); digitalWrite(Mclosed, LOW); } Serial.print("Stick Values:"); Serial.print(ps2x.Analog(PSS_LY), DEC); //Left stick, Y axis. Other options: LX, RY, RX Serial.print(","); Serial.print(ps2x.Analog(PSS_LX), DEC); Serial.print(","); Serial.print(ps2x.Analog(PSS_RY), DEC); Serial.print(","); Serial.println(ps2x.Analog(PSS_RX), DEC); } delay(50); }
|
|
|
|
« Last Edit: January 06, 2013, 03:17:20 pm by HazardsMind »
|
Logged
|
UNO, MEGA, NANO, 4x4 keypad, micro servos, RF transceivers, bluetooth, ultrasonic sensor, 20x4 I2C LCD, 3.2 TFT touch screen, L298N Dual motor driver, Voice Recognition 15W, Gameduino
Arduino Tutorials, coming soon.
"If your doing nothing, it does not mean your lazy, it just means your open for anything that suits you" - Unknown
|
|
|
|
|