양예진, 김보희, 홍성은 팀

Dependencies:   Motordriver PixelArray RemoteIR

Committer:
yangyejin
Date:
Sun Jun 16 23:17:49 2019 +0000
Revision:
99:08d58c8231ca
Parent:
94:9050bb458b00
q

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yangyejin 94:9050bb458b00 1 /* File: TB6612FNG.h
yangyejin 94:9050bb458b00 2 * Author: Robert Abad Copyright (c) 2013
yangyejin 94:9050bb458b00 3 *
yangyejin 94:9050bb458b00 4 * Desc: driver for Toshiiba TB6612FNG Motor Driver. Though this motor driver
yangyejin 94:9050bb458b00 5 * can be used to drive two motors (A and B), it can be used to drive
yangyejin 94:9050bb458b00 6 * just one. Member functions can be used to set period and pulsewidth
yangyejin 94:9050bb458b00 7 * but are not necessary as the constructor does set default values).
yangyejin 94:9050bb458b00 8 * The datasheet for this device can be found here:
yangyejin 94:9050bb458b00 9 * http://www.toshiba.com/taec/components2/Datasheet_Sync/261/27197.pdf
yangyejin 94:9050bb458b00 10 *
yangyejin 94:9050bb458b00 11 * Below is some sample code:
yangyejin 94:9050bb458b00 12 *
yangyejin 94:9050bb458b00 13 * #include "mbed.h"
yangyejin 94:9050bb458b00 14 * #include "TB6612FNG.h"
yangyejin 94:9050bb458b00 15 *
yangyejin 94:9050bb458b00 16 * #define TB6612FNG_PIN_PWMA (p22)
yangyejin 94:9050bb458b00 17 * #define TB6612FNG_PIN_AIN1 (p17)
yangyejin 94:9050bb458b00 18 * #define TB6612FNG_PIN_AIN2 (p16)
yangyejin 94:9050bb458b00 19 * #define TB6612FNG_PIN_PWMB (p21)
yangyejin 94:9050bb458b00 20 * #define TB6612FNG_PIN_BIN1 (p19)
yangyejin 94:9050bb458b00 21 * #define TB6612FNG_PIN_BIN2 (p20)
yangyejin 94:9050bb458b00 22 * #define TB6612FNG_PIN_NSTBY (p18)
yangyejin 94:9050bb458b00 23 * TB6612FNG motorDriver( TB6612FNG_PIN_PWMA, TB6612FNG_PIN_AIN1, TB6612FNG_PIN_AIN2,
yangyejin 94:9050bb458b00 24 * TB6612FNG_PIN_PWMB, TB6612FNG_PIN_BIN1, TB6612FNG_PIN_BIN2,
yangyejin 94:9050bb458b00 25 * TB6612FNG_PIN_NSTBY );
yangyejin 94:9050bb458b00 26 * float fPwmPeriod;
yangyejin 94:9050bb458b00 27 * float fPwmPulsewidth;
yangyejin 94:9050bb458b00 28 *
yangyejin 94:9050bb458b00 29 * int main()
yangyejin 94:9050bb458b00 30 * {
yangyejin 94:9050bb458b00 31 * fPwmPeriod = 0.00002f; // 50KHz
yangyejin 94:9050bb458b00 32 * fPwmPulsewidth = 0.50; // 50% duty cycle
yangyejin 94:9050bb458b00 33 * motorDriver.setPwmAperiod(fPwmPeriod);
yangyejin 94:9050bb458b00 34 * motorDriver.setPwmBperiod(fPwmPeriod);
yangyejin 94:9050bb458b00 35 * motorDriver.setPwmApulsewidth(fPwmPulsewidth);
yangyejin 94:9050bb458b00 36 * motorDriver.setPwmBpulsewidth(fPwmPulsewidth);
yangyejin 94:9050bb458b00 37 *
yangyejin 94:9050bb458b00 38 * while(1)
yangyejin 94:9050bb458b00 39 * {
yangyejin 94:9050bb458b00 40 * motorDriver.motorA_ccw();
yangyejin 94:9050bb458b00 41 * wait(2);
yangyejin 94:9050bb458b00 42 * motorDriver.motorA_cw();
yangyejin 94:9050bb458b00 43 * wait(2);
yangyejin 94:9050bb458b00 44 * motorDriver.motorA_stop();
yangyejin 94:9050bb458b00 45 * wait(2);
yangyejin 94:9050bb458b00 46 * motorDriver.motorB_ccw();
yangyejin 94:9050bb458b00 47 * wait(2);
yangyejin 94:9050bb458b00 48 * motorDriver.motorB_cw();
yangyejin 94:9050bb458b00 49 * wait(2);
yangyejin 94:9050bb458b00 50 * motorDriver.motorB_stop();
yangyejin 94:9050bb458b00 51 * wait(2);
yangyejin 94:9050bb458b00 52 * }
yangyejin 94:9050bb458b00 53 * }
yangyejin 94:9050bb458b00 54 */
yangyejin 94:9050bb458b00 55
yangyejin 94:9050bb458b00 56 #ifndef __TB6612FNG_H__
yangyejin 94:9050bb458b00 57 #define __TB6612FNG_H__
yangyejin 94:9050bb458b00 58
yangyejin 94:9050bb458b00 59 #include "mbed.h"
yangyejin 94:9050bb458b00 60
yangyejin 94:9050bb458b00 61 #define TB6612FNG_PWM_PERIOD_DEFAULT (0.00002) // 50KHz
yangyejin 94:9050bb458b00 62 #define TB6612FNG_PWM_PULSEWIDTH_DEFAULT (0.50) // 50% duty cycle
yangyejin 94:9050bb458b00 63
yangyejin 94:9050bb458b00 64 class TB6612FNG
yangyejin 94:9050bb458b00 65 {
yangyejin 94:9050bb458b00 66 public:
yangyejin 94:9050bb458b00 67 TB6612FNG( PinName pinPwmA, PinName pinAin1, PinName pinAin2,
yangyejin 94:9050bb458b00 68 PinName pinPwmB, PinName pinBin1, PinName pinBin2,
yangyejin 94:9050bb458b00 69 PinName pinNStby );
yangyejin 94:9050bb458b00 70 void setPwmA(float fPeriod, float fPulsewidth);
yangyejin 94:9050bb458b00 71 void setPwmAperiod(float fPeriod);
yangyejin 94:9050bb458b00 72 void setPwmApulsewidth(float fPulsewidth);
yangyejin 94:9050bb458b00 73 void setPwmB(float fPeriod, float fPulsewidth);
yangyejin 94:9050bb458b00 74 void setPwmBperiod(float fPeriod);
yangyejin 94:9050bb458b00 75 void setPwmBpulsewidth(float fPulsewidth);
yangyejin 94:9050bb458b00 76 void standby(void);
yangyejin 94:9050bb458b00 77 void motorA_stop(void);
yangyejin 94:9050bb458b00 78 void motorA_ccw(void);
yangyejin 94:9050bb458b00 79 void motorA_cw(void);
yangyejin 94:9050bb458b00 80 void motorB_stop(void);
yangyejin 94:9050bb458b00 81 void motorB_ccw(void);
yangyejin 94:9050bb458b00 82 void motorB_cw(void);
yangyejin 94:9050bb458b00 83
yangyejin 94:9050bb458b00 84 private:
yangyejin 94:9050bb458b00 85 PwmOut pwmA;
yangyejin 94:9050bb458b00 86 DigitalOut Ain1;
yangyejin 94:9050bb458b00 87 DigitalOut Ain2;
yangyejin 94:9050bb458b00 88 PwmOut pwmB;
yangyejin 94:9050bb458b00 89 DigitalOut Bin1;
yangyejin 94:9050bb458b00 90 DigitalOut Bin2;
yangyejin 94:9050bb458b00 91 DigitalOut nStby;
yangyejin 94:9050bb458b00 92 };
yangyejin 94:9050bb458b00 93
yangyejin 94:9050bb458b00 94 #endif /* __TB6612FNG_H__ */