Robert Zalog / Mbed 2 deprecated hermes_copy

Dependencies:   mbed QEI beep

Committer:
rzalog
Date:
Sun May 05 00:02:11 2019 +0000
Revision:
0:7a97ebb833eb
test commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rzalog 0:7a97ebb833eb 1 #include <string>
rzalog 0:7a97ebb833eb 2
rzalog 0:7a97ebb833eb 3 #include "globals.h"
rzalog 0:7a97ebb833eb 4 #include "main_controller.h"
rzalog 0:7a97ebb833eb 5 #include "pid_controller.h"
rzalog 0:7a97ebb833eb 6
rzalog 0:7a97ebb833eb 7 MainController::MainController() {
rzalog 0:7a97ebb833eb 8 m_pid = new PIDController;
rzalog 0:7a97ebb833eb 9 this->stop();
rzalog 0:7a97ebb833eb 10 }
rzalog 0:7a97ebb833eb 11
rzalog 0:7a97ebb833eb 12 MainController::~MainController() {
rzalog 0:7a97ebb833eb 13 delete m_pid;
rzalog 0:7a97ebb833eb 14 }
rzalog 0:7a97ebb833eb 15
rzalog 0:7a97ebb833eb 16 void MainController::start() {
rzalog 0:7a97ebb833eb 17 m_pid->reset();
rzalog 0:7a97ebb833eb 18 shouldUpdate = true;
rzalog 0:7a97ebb833eb 19 }
rzalog 0:7a97ebb833eb 20
rzalog 0:7a97ebb833eb 21 void MainController::stop() {
rzalog 0:7a97ebb833eb 22 shouldUpdate = false;
rzalog 0:7a97ebb833eb 23 m_pid->reset();
rzalog 0:7a97ebb833eb 24 motors.stop();
rzalog 0:7a97ebb833eb 25 }
rzalog 0:7a97ebb833eb 26
rzalog 0:7a97ebb833eb 27 void MainController::update() {
rzalog 0:7a97ebb833eb 28 if (shouldUpdate) {
rzalog 0:7a97ebb833eb 29 m_pid->update();
rzalog 0:7a97ebb833eb 30 }
rzalog 0:7a97ebb833eb 31 }
rzalog 0:7a97ebb833eb 32
rzalog 0:7a97ebb833eb 33 void MainController::driveStraight() {
rzalog 0:7a97ebb833eb 34 pc.printf("Driving straight.\n");
rzalog 0:7a97ebb833eb 35 m_pid->reset();
rzalog 0:7a97ebb833eb 36
rzalog 0:7a97ebb833eb 37 int start = millis;
rzalog 0:7a97ebb833eb 38
rzalog 0:7a97ebb833eb 39 m_pid->setXGoal(100);
rzalog 0:7a97ebb833eb 40 m_pid->setWGoal(0);
rzalog 0:7a97ebb833eb 41
rzalog 0:7a97ebb833eb 42 while (encoders.right() < 5000) {
rzalog 0:7a97ebb833eb 43 pc.printf(m_pid->getData());
rzalog 0:7a97ebb833eb 44 wait(0.5);
rzalog 0:7a97ebb833eb 45 }
rzalog 0:7a97ebb833eb 46
rzalog 0:7a97ebb833eb 47 int end = millis;
rzalog 0:7a97ebb833eb 48
rzalog 0:7a97ebb833eb 49 systick.stop();
rzalog 0:7a97ebb833eb 50 motors.stop();
rzalog 0:7a97ebb833eb 51
rzalog 0:7a97ebb833eb 52 pc.printf("Done moving straight: %d ms\n", end - start);
rzalog 0:7a97ebb833eb 53 encoders.printValues();
rzalog 0:7a97ebb833eb 54 }
rzalog 0:7a97ebb833eb 55
rzalog 0:7a97ebb833eb 56 void MainController::turn(int deg) {
rzalog 0:7a97ebb833eb 57 pc.printf("Turning %d degrees\n", deg);
rzalog 0:7a97ebb833eb 58 this->start();
rzalog 0:7a97ebb833eb 59
rzalog 0:7a97ebb833eb 60 int counts = deg * deg_to_counts;
rzalog 0:7a97ebb833eb 61
rzalog 0:7a97ebb833eb 62 m_pid->setXGoal(0);
rzalog 0:7a97ebb833eb 63 m_pid->setWGoal(counts);
rzalog 0:7a97ebb833eb 64
rzalog 0:7a97ebb833eb 65 while (!m_pid->isDone()) {
rzalog 0:7a97ebb833eb 66 pc.printf(m_pid->getData());
rzalog 0:7a97ebb833eb 67 }
rzalog 0:7a97ebb833eb 68
rzalog 0:7a97ebb833eb 69 pc.printf(m_pid->getData());
rzalog 0:7a97ebb833eb 70 this->stop();
rzalog 0:7a97ebb833eb 71 pc.printf("Done turning %d degrees\n", deg);
rzalog 0:7a97ebb833eb 72 }
rzalog 0:7a97ebb833eb 73
rzalog 0:7a97ebb833eb 74 void MainController::moveCells(float n) {
rzalog 0:7a97ebb833eb 75 pc.printf("Moving %0.2f cells\n", n);
rzalog 0:7a97ebb833eb 76 this->start();
rzalog 0:7a97ebb833eb 77
rzalog 0:7a97ebb833eb 78 int counts = n * cells_to_counts;
rzalog 0:7a97ebb833eb 79
rzalog 0:7a97ebb833eb 80 pc.printf("Set goal x counts to %d\n", counts);
rzalog 0:7a97ebb833eb 81
rzalog 0:7a97ebb833eb 82 int start = millis;
rzalog 0:7a97ebb833eb 83
rzalog 0:7a97ebb833eb 84 m_pid->setXGoal(counts);
rzalog 0:7a97ebb833eb 85 m_pid->setWGoal(0);
rzalog 0:7a97ebb833eb 86
rzalog 0:7a97ebb833eb 87 while (!m_pid->isDone()) {
rzalog 0:7a97ebb833eb 88 pc.printf(m_pid->getData());
rzalog 0:7a97ebb833eb 89 }
rzalog 0:7a97ebb833eb 90
rzalog 0:7a97ebb833eb 91 int end = millis;
rzalog 0:7a97ebb833eb 92
rzalog 0:7a97ebb833eb 93 pc.printf(m_pid->getData());
rzalog 0:7a97ebb833eb 94
rzalog 0:7a97ebb833eb 95 this->stop();
rzalog 0:7a97ebb833eb 96 pc.printf("Finished moving %0.2f cells: %d ms\n", n, end - start);
rzalog 0:7a97ebb833eb 97 }