このライブラリは模型用のDCモータをmbedで直接制御します。 モータは正転、反転動作が可能です。 モータの回転速度は可変できます。 This library is directly controlled by a DC motor for model mbed. Motor forward rotation, inversion operation is possible. The motor speed is adjustable.
Dependents: adxl335_motor_direction
DcMotorDirectDrive.cpp@0:ade473623320, 2011-12-05 (annotated)
- Committer:
- suupen
- Date:
- Mon Dec 05 12:09:54 2011 +0000
- Revision:
- 0:ade473623320
V1.0 2011/12/06
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
suupen | 0:ade473623320 | 1 | /********************************************************** |
suupen | 0:ade473623320 | 2 | |
suupen | 0:ade473623320 | 3 | * DcMotorDirectDrive.cpp |
suupen | 0:ade473623320 | 4 | * Dc motor direct drive library |
suupen | 0:ade473623320 | 5 | * |
suupen | 0:ade473623320 | 6 | **********************************************************/ |
suupen | 0:ade473623320 | 7 | #define _DCMOTORDIRECTDRIVE_C |
suupen | 0:ade473623320 | 8 | |
suupen | 0:ade473623320 | 9 | #include "types.h" |
suupen | 0:ade473623320 | 10 | #include "mbed.h" |
suupen | 0:ade473623320 | 11 | #include "DcMotorDirectDrive.h" |
suupen | 0:ade473623320 | 12 | |
suupen | 0:ade473623320 | 13 | |
suupen | 0:ade473623320 | 14 | |
suupen | 0:ade473623320 | 15 | |
suupen | 0:ade473623320 | 16 | /** DC motor direct drive object connected to the specified DigtalOutput pin |
suupen | 0:ade473623320 | 17 | */ |
suupen | 0:ade473623320 | 18 | DcMotorDirectDrive::DcMotorDirectDrive(PinName pwmPin, PinName referencePin) : |
suupen | 0:ade473623320 | 19 | _pwmPin(pwmPin), _referencePin(referencePin){ |
suupen | 0:ade473623320 | 20 | |
suupen | 0:ade473623320 | 21 | // pwm setting |
suupen | 0:ade473623320 | 22 | _referencePin = 0; |
suupen | 0:ade473623320 | 23 | _pwmPin.period_us(Z_pwmPeriod); // pwm period 0.1[ms](10[kHz]) |
suupen | 0:ade473623320 | 24 | _pwmPin.write(0.0); |
suupen | 0:ade473623320 | 25 | |
suupen | 0:ade473623320 | 26 | } |
suupen | 0:ade473623320 | 27 | |
suupen | 0:ade473623320 | 28 | |
suupen | 0:ade473623320 | 29 | |
suupen | 0:ade473623320 | 30 | |
suupen | 0:ade473623320 | 31 | /************************************** |
suupen | 0:ade473623320 | 32 | * main |
suupen | 0:ade473623320 | 33 | **************************************/ |
suupen | 0:ade473623320 | 34 | void DcMotorDirectDrive::DcMotorDirectDrive_main(float request) { |
suupen | 0:ade473623320 | 35 | if(request > Z_stopRange){ |
suupen | 0:ade473623320 | 36 | // normal rotation |
suupen | 0:ade473623320 | 37 | _referencePin = 0; |
suupen | 0:ade473623320 | 38 | _pwmPin.write(request); |
suupen | 0:ade473623320 | 39 | } |
suupen | 0:ade473623320 | 40 | else if(request < -Z_stopRange){ |
suupen | 0:ade473623320 | 41 | // reversal rotation |
suupen | 0:ade473623320 | 42 | _referencePin = 1; |
suupen | 0:ade473623320 | 43 | _pwmPin.write(1.0f + request); |
suupen | 0:ade473623320 | 44 | |
suupen | 0:ade473623320 | 45 | } |
suupen | 0:ade473623320 | 46 | else{ |
suupen | 0:ade473623320 | 47 | // stop |
suupen | 0:ade473623320 | 48 | _referencePin = 0; |
suupen | 0:ade473623320 | 49 | _pwmPin.write(0.0); |
suupen | 0:ade473623320 | 50 | } |
suupen | 0:ade473623320 | 51 | |
suupen | 0:ade473623320 | 52 | } |
suupen | 0:ade473623320 | 53 | |
suupen | 0:ade473623320 | 54 |