Rauno U
/
Miisu
Six crescent shaped legs
EncoderMotor.cpp@11:a0976d3b33c5, 2016-04-12 (annotated)
- Committer:
- sim642
- Date:
- Tue Apr 12 13:05:12 2016 +0000
- Revision:
- 11:a0976d3b33c5
- Parent:
- 9:31e850271c4a
- Child:
- 12:8de7f5d56fe4
Make EncodeMotor create its own encoder
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sim642 | 3:2235787e78c4 | 1 | #include "EncoderMotor.hpp" |
sim642 | 3:2235787e78c4 | 2 | |
sim642 | 4:4d54794b99a5 | 3 | const float tickTime = 1.f / 60; |
sim642 | 4:4d54794b99a5 | 4 | |
sim642 | 11:a0976d3b33c5 | 5 | EncoderMotor::EncoderMotor(MotorData nData, EncoderData encData, Smoother &nSpeedSmoother, ErrorController &nEc, ErrorController &nEcRot) : Motor(nData), encoder(encData), speedSmoother(nSpeedSmoother), ec(nEc), setPower(0), ecRot(nEcRot), setRot(0) |
sim642 | 3:2235787e78c4 | 6 | { |
sim642 | 3:2235787e78c4 | 7 | |
sim642 | 3:2235787e78c4 | 8 | } |
sim642 | 3:2235787e78c4 | 9 | |
sim642 | 3:2235787e78c4 | 10 | void EncoderMotor::setup() |
sim642 | 3:2235787e78c4 | 11 | { |
sim642 | 4:4d54794b99a5 | 12 | ticker.attach(this, &EncoderMotor::tick, tickTime); |
sim642 | 3:2235787e78c4 | 13 | } |
sim642 | 3:2235787e78c4 | 14 | |
sim642 | 3:2235787e78c4 | 15 | void EncoderMotor::drive(float power) |
sim642 | 3:2235787e78c4 | 16 | { |
sim642 | 3:2235787e78c4 | 17 | setPower = power; |
sim642 | 3:2235787e78c4 | 18 | //Motor::drive(power); |
sim642 | 3:2235787e78c4 | 19 | } |
sim642 | 3:2235787e78c4 | 20 | |
sim642 | 5:7f800f61cb13 | 21 | void EncoderMotor::rotate(float rot) |
sim642 | 5:7f800f61cb13 | 22 | { |
sim642 | 5:7f800f61cb13 | 23 | setRot += rot; |
sim642 | 5:7f800f61cb13 | 24 | } |
sim642 | 5:7f800f61cb13 | 25 | |
sim642 | 3:2235787e78c4 | 26 | void EncoderMotor::tick() |
sim642 | 3:2235787e78c4 | 27 | { |
sim642 | 3:2235787e78c4 | 28 | long count = encoder.getCount(); |
sim642 | 3:2235787e78c4 | 29 | |
sim642 | 5:7f800f61cb13 | 30 | float errorRot = setRot - count / 600.f; |
sim642 | 5:7f800f61cb13 | 31 | drive(ecRot.step(errorRot)); |
sim642 | 5:7f800f61cb13 | 32 | |
sim642 | 7:8dcdb39efc0e | 33 | float error = setPower - speedSmoother.smooth(encoder.getSpeed()); |
sim642 | 4:4d54794b99a5 | 34 | out = ec.step(error); |
sim642 | 3:2235787e78c4 | 35 | Motor::drive(out); |
sim642 | 3:2235787e78c4 | 36 | } |