progress...

Dependents:   uva_nc

Fork of MotorController by Thijs Riezebeek

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?

UserRevisionLine numberNew 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 }