123123123123123123123123123

Dependencies:   mbed

Committer:
TonyYI
Date:
Tue Jul 01 10:59:33 2014 +0000
Revision:
0:3417ca0a36c0
2014

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TonyYI 0:3417ca0a36c0 1 /******************************************************
TonyYI 0:3417ca0a36c0 2
TonyYI 0:3417ca0a36c0 3 ****┏┓ ┏┓
TonyYI 0:3417ca0a36c0 4 **┏┛┻━━━━━━┛┻┓
TonyYI 0:3417ca0a36c0 5 **┃ ┃
TonyYI 0:3417ca0a36c0 6 **┃ ━━━ ┃
TonyYI 0:3417ca0a36c0 7 **┃ ┳┛ ┗┳ ┃
TonyYI 0:3417ca0a36c0 8 **┃ ┃
TonyYI 0:3417ca0a36c0 9 **┃ ''' ┻ ''' ┃
TonyYI 0:3417ca0a36c0 10 **┃ ┃
TonyYI 0:3417ca0a36c0 11 **┗━━┓ ┏━━┛
TonyYI 0:3417ca0a36c0 12 *******┃ ┃
TonyYI 0:3417ca0a36c0 13 *******┃ ┃
TonyYI 0:3417ca0a36c0 14 *******┃ ┃
TonyYI 0:3417ca0a36c0 15 *******┃ ┗━━━━━━━━┓
TonyYI 0:3417ca0a36c0 16 *******┃ ┃━┓
TonyYI 0:3417ca0a36c0 17 *******┃ NO BUG ┏━┛
TonyYI 0:3417ca0a36c0 18 *******┃ ┃
TonyYI 0:3417ca0a36c0 19 *******┗━┓ ┓ ┏━┏━┓ ━┛
TonyYI 0:3417ca0a36c0 20 ***********┃ ┛ ┛ ┃ ┛ ┛
TonyYI 0:3417ca0a36c0 21 ***********┃ ┃ ┃ ┃ ┃ ┃
TonyYI 0:3417ca0a36c0 22 ***********┗━┛━┛ ┗━┛━┛
TonyYI 0:3417ca0a36c0 23
TonyYI 0:3417ca0a36c0 24 This part is added by project ESDC2014 of CUHK team.
TonyYI 0:3417ca0a36c0 25 All the code with this header are under GPL open source license.
TonyYI 0:3417ca0a36c0 26 This program is running on Mbed Platform 'mbed LPC1768' avaliable in 'http://mbed.org'.
TonyYI 0:3417ca0a36c0 27 **********************************************************/
TonyYI 0:3417ca0a36c0 28 #include "mbed.h"
TonyYI 0:3417ca0a36c0 29 #include "define.h"
TonyYI 0:3417ca0a36c0 30
TonyYI 0:3417ca0a36c0 31 #ifndef _CAMERA_PLATFORM_H
TonyYI 0:3417ca0a36c0 32 #define _CAMERA_PLATFORM_H
TonyYI 0:3417ca0a36c0 33
TonyYI 0:3417ca0a36c0 34 /*
TonyYI 0:3417ca0a36c0 35 PwmOut camera_platform_pwmRoll(p24);
TonyYI 0:3417ca0a36c0 36 PwmOut camera_platform_pwmPitch(p26);
TonyYI 0:3417ca0a36c0 37 PwmOut camera_platform_pwmYaw(p25);
TonyYI 0:3417ca0a36c0 38 */
TonyYI 0:3417ca0a36c0 39
TonyYI 0:3417ca0a36c0 40 #define ROLL_MID 1500
TonyYI 0:3417ca0a36c0 41 #define ROLL_LOW 1000
TonyYI 0:3417ca0a36c0 42 #define ROLL_HIGH 2000
TonyYI 0:3417ca0a36c0 43 #define ROLL_ANGLE_MAX 90
TonyYI 0:3417ca0a36c0 44 #define ROLL_ANGLE_MIN -90
TonyYI 0:3417ca0a36c0 45 #define ROLL_USPD (2000-1500)/180
TonyYI 0:3417ca0a36c0 46
TonyYI 0:3417ca0a36c0 47 #define PITCH_MID 1500
TonyYI 0:3417ca0a36c0 48 #define PITCH_LOW 1300
TonyYI 0:3417ca0a36c0 49 #define PITCH_HIGH 2200
TonyYI 0:3417ca0a36c0 50 #define PITCH_ANGLE_MAX 90
TonyYI 0:3417ca0a36c0 51 #define PITCH_ANGLE_MIN -25
TonyYI 0:3417ca0a36c0 52 #define PITCH_USPD (2200-1300)/115
TonyYI 0:3417ca0a36c0 53
TonyYI 0:3417ca0a36c0 54 #define YAW_MID 1400
TonyYI 0:3417ca0a36c0 55 #define YAW_LOW 600
TonyYI 0:3417ca0a36c0 56 #define YAW_HIGH 2200
TonyYI 0:3417ca0a36c0 57 #define YAW_ANGLE_MAX 90
TonyYI 0:3417ca0a36c0 58 #define YAW_ANGLE_MIN -90
TonyYI 0:3417ca0a36c0 59 #define YAW_USPD (2200-600)/180 //us per degree => 500/90
TonyYI 0:3417ca0a36c0 60
TonyYI 0:3417ca0a36c0 61 #define ROLL 0
TonyYI 0:3417ca0a36c0 62 #define PITCH 1
TonyYI 0:3417ca0a36c0 63 #define YAW 2
TonyYI 0:3417ca0a36c0 64
TonyYI 0:3417ca0a36c0 65 class Camera_platform
TonyYI 0:3417ca0a36c0 66 {
TonyYI 0:3417ca0a36c0 67 public:
TonyYI 0:3417ca0a36c0 68 Camera_platform(MyPwmOut* _pwmRoll, MyPwmOut* _pwmPitch, MyPwmOut* _pwmYaw);
TonyYI 0:3417ca0a36c0 69 ~Camera_platform();
TonyYI 0:3417ca0a36c0 70
TonyYI 0:3417ca0a36c0 71 void cameraPlatformMove(uint16_t move_dis, uint8_t move_dir, uint16_t rotate_dis, uint8_t rotate_dir);
TonyYI 0:3417ca0a36c0 72
TonyYI 0:3417ca0a36c0 73 void setRollLeft(float _degree);
TonyYI 0:3417ca0a36c0 74 void setRollRight(float _degree);
TonyYI 0:3417ca0a36c0 75 void setPitchUp(float _degree);
TonyYI 0:3417ca0a36c0 76 void setPitchDown(float _degree);
TonyYI 0:3417ca0a36c0 77 void setYawClock(float _degree);
TonyYI 0:3417ca0a36c0 78 void setYawCClock(float _degree);
TonyYI 0:3417ca0a36c0 79
TonyYI 0:3417ca0a36c0 80 void resetCameraPlatform();
TonyYI 0:3417ca0a36c0 81
TonyYI 0:3417ca0a36c0 82 uint8_t dir;
TonyYI 0:3417ca0a36c0 83 uint8_t angle;
TonyYI 0:3417ca0a36c0 84
TonyYI 0:3417ca0a36c0 85 private:
TonyYI 0:3417ca0a36c0 86 MyPwmOut* _pwmRoll;
TonyYI 0:3417ca0a36c0 87 MyPwmOut* _pwmPitch;
TonyYI 0:3417ca0a36c0 88 MyPwmOut* _pwmYaw;
TonyYI 0:3417ca0a36c0 89
TonyYI 0:3417ca0a36c0 90 float _roll_angle; //record the current roll angle. need to divide 100 to convert to degree
TonyYI 0:3417ca0a36c0 91 float _pitch_angle; //record the current pitch angle. need to divide 100 to convert to degree
TonyYI 0:3417ca0a36c0 92 float _yaw_angle; //record the current yaw angle. need to divide 100 to convert to degree
TonyYI 0:3417ca0a36c0 93
TonyYI 0:3417ca0a36c0 94 void setPWM(uint16_t _pwm_value_us, uint8_t _pwm_channel); //0 is roll, 1 is pitch, 2 is yaw
TonyYI 0:3417ca0a36c0 95 uint16_t computePwmValue(float _degree, uint8_t _dir, uint8_t _pwm_channel); //0 is left/up/clock, 1 is right/down/cclock
TonyYI 0:3417ca0a36c0 96 };
TonyYI 0:3417ca0a36c0 97
TonyYI 0:3417ca0a36c0 98 #endif