It is a library for controlling Wallbot

Dependents:   wallbot_test

Committer:
jksoft
Date:
Sun Jul 28 08:20:17 2013 +0000
Revision:
0:f8571ffd252a
First

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jksoft 0:f8571ffd252a 1 /**
jksoft 0:f8571ffd252a 2 * Motor Driver TB6612 Control Library
jksoft 0:f8571ffd252a 3 *
jksoft 0:f8571ffd252a 4 * -- TB6612 is a device of the TOSHIBA.
jksoft 0:f8571ffd252a 5 *
jksoft 0:f8571ffd252a 6 * Copyright (C) 2012 Junichi Katsu (JKSOFT)
jksoft 0:f8571ffd252a 7 */
jksoft 0:f8571ffd252a 8
jksoft 0:f8571ffd252a 9
jksoft 0:f8571ffd252a 10 #include "TB6612.h"
jksoft 0:f8571ffd252a 11
jksoft 0:f8571ffd252a 12 // TB6612 Class Constructor
jksoft 0:f8571ffd252a 13 TB6612::TB6612(PinName pwm, PinName fwd, PinName rev):
jksoft 0:f8571ffd252a 14 _pwm(pwm), _fwd(fwd), _rev(rev) {
jksoft 0:f8571ffd252a 15
jksoft 0:f8571ffd252a 16 _fwd = 0;
jksoft 0:f8571ffd252a 17 _rev = 0;
jksoft 0:f8571ffd252a 18 _pwm = 0.0;
jksoft 0:f8571ffd252a 19 _pwm.period(0.001);
jksoft 0:f8571ffd252a 20
jksoft 0:f8571ffd252a 21 bspeed = 0.0;
jksoft 0:f8571ffd252a 22 timer_flag = false;
jksoft 0:f8571ffd252a 23 }
jksoft 0:f8571ffd252a 24
jksoft 0:f8571ffd252a 25 // Speed Control
jksoft 0:f8571ffd252a 26 // arg
jksoft 0:f8571ffd252a 27 // float speed -1.0 - 0.0 - 1.0
jksoft 0:f8571ffd252a 28 void TB6612::speed(float speed) {
jksoft 0:f8571ffd252a 29
jksoft 0:f8571ffd252a 30 if( timer_flag == true ) return;
jksoft 0:f8571ffd252a 31
jksoft 0:f8571ffd252a 32 bspeed = speed;
jksoft 0:f8571ffd252a 33
jksoft 0:f8571ffd252a 34 if( speed > 0.0 )
jksoft 0:f8571ffd252a 35 {
jksoft 0:f8571ffd252a 36 _pwm = speed;
jksoft 0:f8571ffd252a 37 _fwd = 1;
jksoft 0:f8571ffd252a 38 _rev = 0;
jksoft 0:f8571ffd252a 39 }
jksoft 0:f8571ffd252a 40 else if( speed < 0.0 )
jksoft 0:f8571ffd252a 41 {
jksoft 0:f8571ffd252a 42 _pwm = -speed;
jksoft 0:f8571ffd252a 43 _fwd = 0;
jksoft 0:f8571ffd252a 44 _rev = 1;
jksoft 0:f8571ffd252a 45 }
jksoft 0:f8571ffd252a 46 else
jksoft 0:f8571ffd252a 47 {
jksoft 0:f8571ffd252a 48 _fwd = 1;
jksoft 0:f8571ffd252a 49 _rev = 1;
jksoft 0:f8571ffd252a 50 }
jksoft 0:f8571ffd252a 51 }
jksoft 0:f8571ffd252a 52
jksoft 0:f8571ffd252a 53
jksoft 0:f8571ffd252a 54 // Speed Control with time-out
jksoft 0:f8571ffd252a 55 // arg
jksoft 0:f8571ffd252a 56 // float sspeed:-1.0 - 0.0 - 1.0
jksoft 0:f8571ffd252a 57 // float time :0.0-
jksoft 0:f8571ffd252a 58 void TB6612::move(float sspeed , float time)
jksoft 0:f8571ffd252a 59 {
jksoft 0:f8571ffd252a 60 speed(sspeed);
jksoft 0:f8571ffd252a 61 timer_flag = true;
jksoft 0:f8571ffd252a 62 timer.attach(this,&TB6612::timeout,time);
jksoft 0:f8571ffd252a 63 }
jksoft 0:f8571ffd252a 64
jksoft 0:f8571ffd252a 65
jksoft 0:f8571ffd252a 66 void TB6612::timeout()
jksoft 0:f8571ffd252a 67 {
jksoft 0:f8571ffd252a 68 timer_flag = false;
jksoft 0:f8571ffd252a 69 speed(bspeed);
jksoft 0:f8571ffd252a 70 }
jksoft 0:f8571ffd252a 71