progress...
Fork of MotorController by
MotorController.cpp@1:ed42d9035468, 2016-01-07 (annotated)
- Committer:
- jurgy
- Date:
- Thu Jan 07 16:19:14 2016 +0000
- Revision:
- 1:ed42d9035468
- Parent:
- 0:ec2f323f6388
- Child:
- 2:70607c6dad36
All of dem fixes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sinterbaas | 0:ec2f323f6388 | 1 | #include "MotorController.h" |
Sinterbaas | 0:ec2f323f6388 | 2 | |
Sinterbaas | 0:ec2f323f6388 | 3 | MotorController::MotorController (HBridge &motor, AnalogIn &motorInput) : |
Sinterbaas | 0:ec2f323f6388 | 4 | motor ( motor ), motorInput ( motorInput ) { |
Sinterbaas | 0:ec2f323f6388 | 5 | } |
Sinterbaas | 0:ec2f323f6388 | 6 | |
Sinterbaas | 0:ec2f323f6388 | 7 | void MotorController::start () { |
Sinterbaas | 0:ec2f323f6388 | 8 | this->motor.start(); |
Sinterbaas | 0:ec2f323f6388 | 9 | } |
Sinterbaas | 0:ec2f323f6388 | 10 | |
Sinterbaas | 0:ec2f323f6388 | 11 | void MotorController::stop () { |
Sinterbaas | 0:ec2f323f6388 | 12 | this->motor.stop(); |
Sinterbaas | 0:ec2f323f6388 | 13 | } |
Sinterbaas | 0:ec2f323f6388 | 14 | |
Sinterbaas | 0:ec2f323f6388 | 15 | void MotorController::turnLeft () { |
Sinterbaas | 0:ec2f323f6388 | 16 | this->motor.start(); |
Sinterbaas | 0:ec2f323f6388 | 17 | this->motor.backward(); |
Sinterbaas | 0:ec2f323f6388 | 18 | } |
Sinterbaas | 0:ec2f323f6388 | 19 | |
Sinterbaas | 0:ec2f323f6388 | 20 | |
Sinterbaas | 0:ec2f323f6388 | 21 | void MotorController::turnRight () { |
Sinterbaas | 0:ec2f323f6388 | 22 | this->motor.start(); |
Sinterbaas | 0:ec2f323f6388 | 23 | this->motor.forward(); |
Sinterbaas | 0:ec2f323f6388 | 24 | } |
Sinterbaas | 0:ec2f323f6388 | 25 | |
Sinterbaas | 0:ec2f323f6388 | 26 | void MotorController::setPosition (float position) { |
Sinterbaas | 0:ec2f323f6388 | 27 | float current_position = this->getPosition(); |
Sinterbaas | 0:ec2f323f6388 | 28 | |
jurgy | 1:ed42d9035468 | 29 | if (current_position <= position * (1 + this->margin_percentage) + this->margin_fixed && current_position >= position * (1 - this->margin_percentage) - this->margin_fixed) { |
jurgy | 1:ed42d9035468 | 30 | this->stop(); |
jurgy | 1:ed42d9035468 | 31 | } else if (current_position > position) { |
Sinterbaas | 0:ec2f323f6388 | 32 | this->turnLeft(); |
Sinterbaas | 0:ec2f323f6388 | 33 | |
jurgy | 1:ed42d9035468 | 34 | if (this->getPosition() <= position) { |
jurgy | 1:ed42d9035468 | 35 | this->stop(); |
Sinterbaas | 0:ec2f323f6388 | 36 | } |
Sinterbaas | 0:ec2f323f6388 | 37 | } |
Sinterbaas | 0:ec2f323f6388 | 38 | else { |
Sinterbaas | 0:ec2f323f6388 | 39 | this->turnRight(); |
Sinterbaas | 0:ec2f323f6388 | 40 | |
jurgy | 1:ed42d9035468 | 41 | if (this->getPosition() >= position) { |
jurgy | 1:ed42d9035468 | 42 | this->stop(); |
Sinterbaas | 0:ec2f323f6388 | 43 | } |
Sinterbaas | 0:ec2f323f6388 | 44 | } |
Sinterbaas | 0:ec2f323f6388 | 45 | } |
Sinterbaas | 0:ec2f323f6388 | 46 | |
Sinterbaas | 0:ec2f323f6388 | 47 | |
Sinterbaas | 0:ec2f323f6388 | 48 | float MotorController::getPosition () { |
Sinterbaas | 0:ec2f323f6388 | 49 | return this->motorInput.read() * 100.0f; |
jurgy | 1:ed42d9035468 | 50 | } |
jurgy | 1:ed42d9035468 | 51 | |
jurgy | 1:ed42d9035468 | 52 | void MotorController::setCurrentAction(char c) { |
jurgy | 1:ed42d9035468 | 53 | this->currentAction = c; |
jurgy | 1:ed42d9035468 | 54 | } |
jurgy | 1:ed42d9035468 | 55 | |
jurgy | 1:ed42d9035468 | 56 | char MotorController::getCurrentAction() { |
jurgy | 1:ed42d9035468 | 57 | return this->currentAction; |
Sinterbaas | 0:ec2f323f6388 | 58 | } |