動作確認済み
Diff: GMD.cpp
- Revision:
- 2:858781a5bbd1
- Parent:
- 1:9d066dbe1893
diff -r 9d066dbe1893 -r 858781a5bbd1 GMD.cpp --- a/GMD.cpp Sat Jul 02 06:22:45 2016 +0000 +++ b/GMD.cpp Sun Jul 03 01:20:22 2016 +0000 @@ -18,11 +18,19 @@ _pwm[1]->period_ticks(_frequency_to_tick_coeff / f_kHz); } +float sign(float n) { + if (n < 0.0f) { + return -1.0f; + } + return 1.0f; +} + float GMD::set(float p) { - p = std::max(0.0f, std::min(p, 1.0f)); + p = std::max(-1.0f, std::min(p, 1.0f)); + p = (abs(p) * (_duty_upper_limit - _duty_lower_limit) + _duty_lower_limit) * sign(p); if (p < 0.0f) { - _pwm[0]->write(p); + _pwm[0]->write(-p); _pwm[1]->write(0.0f); } else { _pwm[0]->write(0.0f);