Bluetooth

Embed Size (px)

DESCRIPTION

dgdfdd

Citation preview

*/#include "remotexy.h" // Include the header file for remote XY#include // Include the servo control library#include // Include the watchdog libraryServo left, right, waist, shoulder, elbow, gripper ; // create servo objects to control servosint waistPos = 74; // variable to store the base servo position// Set to 10 to prevent movement at startint shoulderPos = 64; // variable to store the shoulder servo position// Set to 50 to prevent movement at startint elbowPos = 98; // variable to store the elbow servo position// Set to 70 to prevent movement at startint gripperPos = 0; // variable to store the gripper servo position// Set to 0 to prevent movement at startint leftPos = 89; // variable to store the left servo position// set to 89 to prevent movement at startint rightPos = 89; // variable to store the right servo position// set to 89 to prevent movement at startvoid setup(){ Serial.begin(9600); RemoteXY_Init (); // Initialise the remote XY code - set screen and buttons etc left.attach(5); // attaches the left drive servo on pin 5 to the servo object right.attach(3); // attaches the right drive servo on pin 4 to the servo object waist.attach(9); // attaches the waist servo on pin 9 to the servo object shoulder.attach(8); // attaches the uppoer shoulder servo on pin 9 to the servo object elbow.attach(7); // attaches the lower shoulder servo on pin 7 to the servo object gripper.attach(6); // attaches the gripper servo on pin 6 to the servo object left.write(leftPos); // Halt left servo right.write(rightPos); // Halt right servo waist.write(waistPos); // set intial waist position shoulder.write(shoulderPos); // set initial shoulder position elbow.write(elbowPos); // Set inital elbow position gripper.write(gripperPos); // Ensure gripper is open!}void loop(){ RemoteXY_Handler (); //read user data from mobile phone if (RemoteXY.roverForwards == 1) // move rover forwards button pressed { moveForward(); } if (RemoteXY.roverBackwards == 1) // move rover backwards button pressed { moveBackward(); } if (RemoteXY.roverLeft == 1) // move rover left button pressed { leftTurn(); } if (RemoteXY.roverRight == 1) // move rover right button pressed { rightTurn(); } if (RemoteXY.roverStop == 1) // stop rover button pressed { roverStop(); } if (RemoteXY.waistAntiClockwise == 1) // move meArm waist antiClockwise button pressed { moveWaistAntiClockwise(); } if (RemoteXY.waistClockwise == 1) // move meArm waist clockwise button pressed { moveWaistClockwise(); } if (RemoteXY.shoulderExtend == 1) // extend meArm shoulder button pressed { shoulderExtend(); } if (RemoteXY.shoulderRetract == 1) // retract meArm shoulder button pressed { shoulderRetract(); } if (RemoteXY.elbowUp == 1) // extend meArm elbow button pressed { elbowUp(); } if (RemoteXY.elbowDown == 1) // retract meArm elbow button pressed { elbowDown(); } if (RemoteXY.gripperOpen == 1) // open meArm gripper button pressed { openGripper(); } if (RemoteXY.gripperClose == 1) // close meArm gripper button pressed { closeGripper(); } if (RemoteXY.stopAllMovement == 1) // stop all movement button pressed { stopMoving(); } if (RemoteXY.startAllMovement == 1) // start all movement button pressed { startMoving(); } if (RemoteXY.resetArduino == 1) // reset arduino button pressed { resetArduino(); }}void moveForward() // move the rover forwards{ left.attach(5); // attaches the left drive servo on pin 5 to the servo object right.attach(3); // attaches the right drive servo on pin 4 to the servo object //set left servo going forward leftPos = 179; left.write(leftPos); //set Right servo going forward rightPos = 0; right.write(rightPos); Serial2.flush(); Serial.flush(); delay(15);}void moveBackward() // move the rover backwards{ left.attach(5); // attaches the left drive servo on pin 5 to the servo object right.attach(3); // attaches the right drive servo on pin 4 to the servo object //set left servo going back leftPos = 0; left.write(leftPos); //set light servo going back rightPos = 179; right.write(rightPos); Serial2.flush(); Serial.flush(); delay(15);}void leftTurn() // turn rover left{ left.attach(5); // attaches the left drive servo on pin 5 to the servo object right.attach(3); // attaches the right drive servo on pin 4 to the servo object //set left servo going left leftPos = 0; left.write(leftPos); //set Right servo going left rightPos = 0; right.write(rightPos); Serial2.flush(); Serial.flush(); delay(15);}void rightTurn() //turn rover right{ left.attach(5); // attaches the left drive servo on pin 5 to the servo object right.attach(3); // attaches the right drive servo on pin 4 to the servo object //set left servo going right leftPos = 179; left.write(leftPos); //set Right servo going right rightPos = 179; right.write(rightPos); Serial2.flush(); Serial.flush(); delay(15);}void roverStop() // halt the rover{ Serial.print("Robot Halted"); Serial.println(); //Halt left servo leftPos = 89; left.write(leftPos); //Halt right servo rightPos = 89; right.write(rightPos); left.detach(); right.detach(); Serial2.flush(); Serial.flush(); delay(15);}void moveWaistAntiClockwise() // move waist anti clockwise{ Serial.print("Moving waist Anti clockwise "); Serial.println(); Serial.print("Waist Position Value: "); Serial.print(waistPos); Serial.println(); if (waistPos >= 0 && waistPos != 179) { waistPos++; waist.write(waistPos); delay(15); } if (waistPos == 179) { Serial.print("Reached end of travel....stopping"); Serial.println(); } Serial2.flush(); Serial.flush(); delay(15);}void moveWaistClockwise() // move waist clockwise{ Serial.print("Moving base clockwise "); Serial.println(); Serial.print("waistPos Value: "); Serial.print(waistPos); Serial.println(); if (waistPos = 32 && shoulderPos != 179) { shoulderPos++; shoulder.write(shoulderPos); delay(15); } if (shoulderPos == 179) { Serial.print("Reached end of travel....stopping"); Serial.println(); } Serial2.flush(); Serial.flush(); delay(15);}void shoulderRetract() // retract shoulder section{ Serial.print("Retracting from shoulder"); Serial.println(); Serial.print("shoulderPos Value: "); Serial.print(shoulderPos); Serial.println(); if (shoulderPos = 45 && elbowPos != 147) { elbowPos++; elbow.write(elbowPos); delay(15); } if (elbowPos == 147) { Serial.print("Reached end of travel....stopping"); Serial.println(); } Serial2.flush(); Serial.flush(); delay(15);}void elbowDown() // move elbow down{ Serial.print("Retracting elbow"); Serial.println(); Serial.print("elbowPos Value: "); Serial.print(elbowPos); Serial.println(); if (elbowPos = 0 && gripperPos != 40) { gripperPos++; gripper.write(gripperPos); delay(15); } if (gripperPos == 40) { Serial.print("Reached end of travel....stopping"); Serial.println(); } Serial2.flush(); Serial.flush(); delay(15);}void openGripper() // open gripper{ Serial.print("Opening Gripper Jaws "); Serial.println(); Serial.print("gripperPos Value: "); Serial.print(gripperPos); Serial.print(gripperPos); Serial.println(); if (gripperPos 8, &crc); RemoteXY_WriteByte (RemoteXY_State.command, &crc); while (len--) { RemoteXY_WriteByte (*(p++), &crc); } RemoteXY_SerialWrite (crc); } void RemoteXY_Receive (unsigned char *p, unsigned int len) { unsigned char *pi = RemoteXY_buffer; while (len--) { *p++=*pi++; } } void RemoteXY_Handler (void) { unsigned char c; unsigned long tim; while (RemoteXY_SerialAvailable() > 0) { c = RemoteXY_SerialRead (); RemoteXY_State.crc+=c; switch (RemoteXY_State.index) { case 0: RemoteXY_State.count=c; break; case 1: RemoteXY_State.count+=cREMOTEXY_TIMOUT) { RemoteXY_State.index = 0; RemoteXY_State.crc = 0; } } if (millis()-RemoteXY_State.timeout>REMOTEXY_TIMOUT_DISCONNECTED) { RemoteXY.connect_flag=0; } }Here is the remotexy.h:#ifndef _REMOTEXY_H_ #define _REMOTEXY_H_ /* enter your serial port */ #define REMOTEXY_SERIAL Serial2 /* this structure defines all the variables of your control interface */ typedef struct { /* input variable */ unsigned char roverForwards; /* =1 if button pressed, else =0 */ unsigned char roverBackwards; /* =1 if button pressed, else =0 */ unsigned char roverLeft; /* =1 if button pressed, else =0 */ unsigned char roverRight; /* =1 if button pressed, else =0 */ unsigned char waistAntiClockwise; /* =1 if button pressed, else =0 */ unsigned char waistClockwise; /* =1 if button pressed, else =0 */ unsigned char shoulderRetract; /* =1 if button pressed, else =0 */ unsigned char shoulderExtend; /* =1 if button pressed, else =0 */ unsigned char elbowUp; /* =1 if button pressed, else =0 */ unsigned char elbowDown; /* =1 if button pressed, else =0 */ unsigned char gripperOpen; /* =1 if button pressed, else =0 */ unsigned char gripperClose; /* =1 if button pressed, else =0 */ unsigned char stopAllMovement; /* =1 if button pressed, else =0 */ unsigned char startAllMovement; /* =1 if button pressed, else =0 */ unsigned char roverStop; /* =1 if button pressed, else =0 */ unsigned char resetArduino; /* =1 if button pressed, else =0 */ /* other variable */ unsigned char connect_flag; /* =1 if wire connected, else =0 */} RemoteXY_TypeDef; /* this variable must be used for data transfer */ extern RemoteXY_TypeDef RemoteXY; void RemoteXY_Init (void); void RemoteXY_Handler (void); #endif //_REMOTEXY_H_