123123123123123123123123123

Dependencies:   mbed

Committer:
TonyYI
Date:
Thu Jul 03 14:52:44 2014 +0000
Revision:
3:4306d042af6f
Parent:
0:3417ca0a36c0
123123

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 "lifter.h"
TonyYI 0:3417ca0a36c0 29
TonyYI 0:3417ca0a36c0 30 Lifter::Lifter(MyDigitalOut* _enable, MyPwmOut* _pwmUp, MyPwmOut* _pwmDown, MyInterruptIn* _encoder_A, MyDigitalIn* _encoder_B)
TonyYI 0:3417ca0a36c0 31 {
TonyYI 0:3417ca0a36c0 32 pulseCount = 0;
TonyYI 0:3417ca0a36c0 33 targetPulseCount = 0;
TonyYI 0:3417ca0a36c0 34 _dir = 0;
TonyYI 0:3417ca0a36c0 35 _stop = 0;
TonyYI 0:3417ca0a36c0 36
TonyYI 0:3417ca0a36c0 37 this->_enable = _enable;
TonyYI 0:3417ca0a36c0 38 this->_pwmUp = _pwmUp;
TonyYI 0:3417ca0a36c0 39 this->_pwmDown = _pwmDown;
TonyYI 0:3417ca0a36c0 40 this->_encoder_A = _encoder_A;
TonyYI 0:3417ca0a36c0 41 this->_encoder_B = _encoder_B;
TonyYI 0:3417ca0a36c0 42
TonyYI 0:3417ca0a36c0 43 setLifterStop();
TonyYI 0:3417ca0a36c0 44 }
TonyYI 0:3417ca0a36c0 45
TonyYI 0:3417ca0a36c0 46 Lifter::~Lifter()
TonyYI 0:3417ca0a36c0 47 {
TonyYI 0:3417ca0a36c0 48 delete _enable;
TonyYI 0:3417ca0a36c0 49 delete _pwmUp;
TonyYI 0:3417ca0a36c0 50 delete _pwmDown;
TonyYI 0:3417ca0a36c0 51 delete _encoder_A; //6 pulse per round
TonyYI 0:3417ca0a36c0 52 delete _encoder_B; //5v is up, 0v is down. looks like no use
TonyYI 0:3417ca0a36c0 53 }
TonyYI 0:3417ca0a36c0 54
TonyYI 0:3417ca0a36c0 55 void Lifter::lifterUp(uint16_t mm)
TonyYI 0:3417ca0a36c0 56 {
TonyYI 0:3417ca0a36c0 57 targetPulseCount = mm * RPMM;
TonyYI 0:3417ca0a36c0 58 //targetPulseCount = mm;
TonyYI 0:3417ca0a36c0 59 setLifterUp();
TonyYI 0:3417ca0a36c0 60 }
TonyYI 0:3417ca0a36c0 61
TonyYI 0:3417ca0a36c0 62 void Lifter::lifterDown(uint16_t mm)
TonyYI 0:3417ca0a36c0 63 {
TonyYI 0:3417ca0a36c0 64 targetPulseCount = mm * RPMM;
TonyYI 0:3417ca0a36c0 65 //targetPulseCount = mm;
TonyYI 0:3417ca0a36c0 66 setLifterDown();
TonyYI 0:3417ca0a36c0 67 }
TonyYI 0:3417ca0a36c0 68
TonyYI 0:3417ca0a36c0 69 uint8_t Lifter::getDir()
TonyYI 0:3417ca0a36c0 70 {
TonyYI 0:3417ca0a36c0 71 /*
TonyYI 0:3417ca0a36c0 72 if(*_encoder_B == 1) //up
TonyYI 0:3417ca0a36c0 73 {
TonyYI 0:3417ca0a36c0 74 return true;
TonyYI 0:3417ca0a36c0 75 }
TonyYI 0:3417ca0a36c0 76 else //down
TonyYI 0:3417ca0a36c0 77 {
TonyYI 0:3417ca0a36c0 78 return false;
TonyYI 0:3417ca0a36c0 79 }
TonyYI 0:3417ca0a36c0 80 */
TonyYI 0:3417ca0a36c0 81 return _dir;
TonyYI 0:3417ca0a36c0 82 }
TonyYI 0:3417ca0a36c0 83 uint8_t Lifter::isStopped()
TonyYI 0:3417ca0a36c0 84 {
TonyYI 0:3417ca0a36c0 85 return _stop;
TonyYI 0:3417ca0a36c0 86 }
TonyYI 0:3417ca0a36c0 87
TonyYI 0:3417ca0a36c0 88 void Lifter::lifterMove(uint16_t move_dis, uint8_t move_dir, uint16_t rotate_dis, uint8_t rotate_dir)
TonyYI 0:3417ca0a36c0 89 {
TonyYI 0:3417ca0a36c0 90 pulseCount = targetPulseCount = 0;
TonyYI 0:3417ca0a36c0 91 _stop = 0;
TonyYI 0:3417ca0a36c0 92
TonyYI 0:3417ca0a36c0 93 if(_dir = move_dir == 0x00) //up
TonyYI 0:3417ca0a36c0 94 {
TonyYI 0:3417ca0a36c0 95 lifterUp(move_dis);
TonyYI 0:3417ca0a36c0 96 }
TonyYI 0:3417ca0a36c0 97 else if(_dir = move_dir == 0x02) //down
TonyYI 0:3417ca0a36c0 98 {
TonyYI 0:3417ca0a36c0 99 lifterDown(move_dis);
TonyYI 0:3417ca0a36c0 100 }
TonyYI 0:3417ca0a36c0 101 }
TonyYI 0:3417ca0a36c0 102
TonyYI 0:3417ca0a36c0 103 void Lifter::setLifterStop()
TonyYI 0:3417ca0a36c0 104 {
TonyYI 0:3417ca0a36c0 105 *_enable = 0;
TonyYI 0:3417ca0a36c0 106 *_pwmUp = 1.0f;
TonyYI 0:3417ca0a36c0 107 *_pwmDown = 1.0f;
TonyYI 0:3417ca0a36c0 108 _stop = 1;
TonyYI 0:3417ca0a36c0 109 }
TonyYI 0:3417ca0a36c0 110 void Lifter::setLifterUp()
TonyYI 0:3417ca0a36c0 111 {
TonyYI 0:3417ca0a36c0 112 *_enable = 0;
TonyYI 0:3417ca0a36c0 113 *_pwmUp = 1.0f;
TonyYI 0:3417ca0a36c0 114 *_pwmDown = 0.0f;
TonyYI 0:3417ca0a36c0 115 }
TonyYI 0:3417ca0a36c0 116 void Lifter::setLifterDown()
TonyYI 0:3417ca0a36c0 117 {
TonyYI 0:3417ca0a36c0 118 *_enable = 0;
TonyYI 0:3417ca0a36c0 119 *_pwmUp = 0.0f;
TonyYI 0:3417ca0a36c0 120 *_pwmDown = 1.0f;
TonyYI 0:3417ca0a36c0 121 }