#include #include //Grip Range #define minGrip 90 #define maxGrip 135 //Tuck Range #define minTuck 40 #define maxTuck 140 //Lift Range #define minLift 40 #define maxLift 160 //Base Range #define minBase 0 #define maxBase 160 //HOME #define homeGrip 135 #define homeLift 40 #define homeTuck 60 #define homeBase 90 //SERVO NUMBERS #define GRIP 1 #define BASE 2 #define LIFT 3 #define TUCK 4 eGizmo_PS2Controller ps2Data(&Serial); eGizmo_PBot_Uno PBot; int last_dataX, last_dataY; void setup(){ //Initialize PS2 & PBot ps2Data.begin(9600); PBot.BEGIN(); //wait for ps2 input PBot.STOP(); //delay(2000); //Set all servo to home position PBot.SERVO1(homeGrip); delay(15); PBot.SERVO2(homeBase); delay(15); PBot.SERVO3(homeLift); delay(15); PBot.SERVO4(homeTuck); delay(15); //Save position values PBot.servo1Pos = homeGrip; PBot.servo2Pos = homeBase; PBot.servo3Pos = homeLift; PBot.servo4Pos = homeTuck; //Wait for valid PS2 input while(!ps2Data.update()); } void loop(){ //Query PS2 cotroller data, wait for valid inputs if(ps2Data.update()){ //Motor Controls //Update motor states only when left joystick values change if((last_dataY != ps2Data.lefty) || (last_dataX != ps2Data.leftx)){ last_dataX = ps2Data.leftx; last_dataY = ps2Data.lefty; PBot.PS2MOTORCONTROL(last_dataX, last_dataY); } //E-gra Codes //Check for button press, do routines if button is pressed if(ps2Data.right){ PBot.servo1Pos--; //Keep Values within acceptable limits PBot.servo1Pos = constrain(PBot.servo1Pos, minGrip, maxGrip); Serial.println(PBot.servo1Pos); //Write servo position values PBot.SERVO1(PBot.servo1Pos); }//if if(ps2Data.left){ PBot.servo1Pos++; //Keep Values within acceptable limits PBot.servo1Pos = constrain(PBot.servo1Pos, minGrip, maxGrip); Serial.println(PBot.servo1Pos); //Write servo position values PBot.SERVO1(PBot.servo1Pos); }//if if(ps2Data.square){ PBot.servo2Pos++; //Keep Values within acceptable limits PBot.servo2Pos = constrain(PBot.servo2Pos, minBase, maxBase); Serial.println(PBot.servo2Pos); //Write servo position values PBot.SERVO2(PBot.servo2Pos); }//if if(ps2Data.circle){ PBot.servo2Pos--; //Keep Values within acceptable limits PBot.servo2Pos = constrain(PBot.servo2Pos, minBase, maxBase); Serial.println(PBot.servo2Pos); //Write servo position values PBot.SERVO2(PBot.servo2Pos); }//if if(ps2Data.cross){ PBot.servo3Pos++; //Keep Values within acceptable limits PBot.servo3Pos = constrain(PBot.servo3Pos, minLift, maxLift); Serial.println(PBot.servo3Pos); //Write servo position values PBot.SERVO3(PBot.servo3Pos); }//if if(ps2Data.triangle){ PBot.servo3Pos--; //Keep Values within acceptable limits PBot.servo3Pos = constrain(PBot.servo3Pos, minLift, maxLift); Serial.println(PBot.servo3Pos); //Write servo position values PBot.SERVO3(PBot.servo3Pos); }//if if(ps2Data.right2){ PBot.servo4Pos++; //Keep Values within acceptable limits PBot.servo4Pos = constrain(PBot.servo4Pos, minTuck, maxTuck); Serial.println(PBot.servo4Pos); //Write servo position values PBot.SERVO4(PBot.servo4Pos); }//if if(ps2Data.right1){ PBot.servo4Pos--; //Keep Values within acceptable limits PBot.servo4Pos = constrain(PBot.servo4Pos, minTuck, maxTuck); Serial.println(PBot.servo4Pos); //Write servo position values PBot.SERVO4(PBot.servo4Pos); }//if delay(15); }//if }