Tony YI
/
ESDC2014
123123123123123123123123123
camera_platform.h@0:3417ca0a36c0, 2014-07-01 (annotated)
- Committer:
- TonyYI
- Date:
- Tue Jul 01 10:59:33 2014 +0000
- Revision:
- 0:3417ca0a36c0
2014
Who changed what in which revision?
User | Revision | Line number | New 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 |