My modifications/additions to the code
Dependencies: ADXL345 ADXL345_I2C IMUfilter ITG3200 Servo fishgait mbed-rtos mbed pixy_cam
Fork of robotic_fish_ver_4_8 by
PwmIn.cpp@9:8dd7a76756e2, 2014-01-31 (annotated)
- Committer:
- rkk
- Date:
- Fri Jan 31 04:53:10 2014 +0000
- Revision:
- 9:8dd7a76756e2
- Parent:
- 8:0574a5db1fc4
- Child:
- 22:807d5467fbf6
added more code to the sinusoidal driving
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rkk | 8:0574a5db1fc4 | 1 | #include "PwmIn.h" |
rkk | 8:0574a5db1fc4 | 2 | |
rkk | 8:0574a5db1fc4 | 3 | PwmIn::PwmIn(PinName p, float dutyMin, float dutyMax) |
rkk | 8:0574a5db1fc4 | 4 | : _p(p) { |
rkk | 8:0574a5db1fc4 | 5 | _p.rise(this, &PwmIn::rise); |
rkk | 8:0574a5db1fc4 | 6 | _p.fall(this, &PwmIn::fall); |
rkk | 8:0574a5db1fc4 | 7 | _period = 20000; |
rkk | 8:0574a5db1fc4 | 8 | _pulsewidth = 0; |
rkk | 8:0574a5db1fc4 | 9 | _t.start(); |
rkk | 8:0574a5db1fc4 | 10 | _risen = false; |
rkk | 8:0574a5db1fc4 | 11 | _dutyMin = dutyMin; |
rkk | 8:0574a5db1fc4 | 12 | _dutyMax = dutyMax; |
rkk | 8:0574a5db1fc4 | 13 | _dutyDelta = dutyMax - dutyMin; |
rkk | 8:0574a5db1fc4 | 14 | |
rkk | 8:0574a5db1fc4 | 15 | } |
rkk | 8:0574a5db1fc4 | 16 | |
rkk | 8:0574a5db1fc4 | 17 | float PwmIn::period() { |
rkk | 8:0574a5db1fc4 | 18 | return float(_period)/1000000; |
rkk | 8:0574a5db1fc4 | 19 | } |
rkk | 8:0574a5db1fc4 | 20 | |
rkk | 8:0574a5db1fc4 | 21 | float PwmIn::pulsewidth() { |
rkk | 8:0574a5db1fc4 | 22 | return float(_pulsewidth)/1000000; |
rkk | 8:0574a5db1fc4 | 23 | } |
rkk | 8:0574a5db1fc4 | 24 | |
rkk | 8:0574a5db1fc4 | 25 | float PwmIn::dutycycle() { |
rkk | 8:0574a5db1fc4 | 26 | return float(_pulsewidth) / float(_period); |
rkk | 8:0574a5db1fc4 | 27 | } |
rkk | 8:0574a5db1fc4 | 28 | |
rkk | 8:0574a5db1fc4 | 29 | float PwmIn::dutycyclescaledup() { |
rkk | 8:0574a5db1fc4 | 30 | float duty = float(_pulsewidth) / float(_period); |
rkk | 8:0574a5db1fc4 | 31 | float dutyAdjusted = (duty > _dutyMin) ? ((duty-_dutyMin)/_dutyDelta) : 0.0; |
rkk | 8:0574a5db1fc4 | 32 | return (dutyAdjusted < 1.0) ? dutyAdjusted : 1.0; |
rkk | 8:0574a5db1fc4 | 33 | |
rkk | 8:0574a5db1fc4 | 34 | } |
rkk | 8:0574a5db1fc4 | 35 | |
rkk | 8:0574a5db1fc4 | 36 | void PwmIn::rise() |
rkk | 8:0574a5db1fc4 | 37 | { |
rkk | 8:0574a5db1fc4 | 38 | _tmp = _t.read_us(); |
rkk | 8:0574a5db1fc4 | 39 | if(_tmp > 19000) { |
rkk | 8:0574a5db1fc4 | 40 | _period = _tmp; |
rkk | 8:0574a5db1fc4 | 41 | _risen = true; |
rkk | 8:0574a5db1fc4 | 42 | _t.reset(); |
rkk | 8:0574a5db1fc4 | 43 | } |
rkk | 8:0574a5db1fc4 | 44 | } |
rkk | 8:0574a5db1fc4 | 45 | |
rkk | 8:0574a5db1fc4 | 46 | void PwmIn::fall() |
rkk | 8:0574a5db1fc4 | 47 | { |
rkk | 8:0574a5db1fc4 | 48 | _tmp = _t.read_us(); |
rkk | 8:0574a5db1fc4 | 49 | if(_tmp > 1000 && _tmp < 1950 && _risen == true) { |
rkk | 8:0574a5db1fc4 | 50 | _pulsewidth = _tmp; |
rkk | 8:0574a5db1fc4 | 51 | _risen = false; |
rkk | 8:0574a5db1fc4 | 52 | } |
rkk | 8:0574a5db1fc4 | 53 | } |
rkk | 8:0574a5db1fc4 | 54 | |
rkk | 8:0574a5db1fc4 | 55 |