Rob Griffith / Mbed 2 deprecated rat_code

Dependencies:   mbed QEI

Committer:
rwgriffithv
Date:
Mon Nov 26 23:50:58 2018 +0000
Revision:
3:35deb5c21b33
Parent:
1:6f18bb7a77a5
pid controller updated

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dionigi 1:6f18bb7a77a5 1 #include <string>
dionigi 1:6f18bb7a77a5 2
dionigi 1:6f18bb7a77a5 3 #include "main_controller.h"
dionigi 1:6f18bb7a77a5 4 #include "pid_controller.h"
dionigi 1:6f18bb7a77a5 5
dionigi 1:6f18bb7a77a5 6 MainController::MainController() {
dionigi 1:6f18bb7a77a5 7 m_pid = new PIDController;
dionigi 1:6f18bb7a77a5 8 }
dionigi 1:6f18bb7a77a5 9
dionigi 1:6f18bb7a77a5 10 MainController::~MainController() {
dionigi 1:6f18bb7a77a5 11 delete m_pid;
dionigi 1:6f18bb7a77a5 12 }
dionigi 1:6f18bb7a77a5 13
dionigi 1:6f18bb7a77a5 14 /***
dionigi 1:6f18bb7a77a5 15 * Assignment 3
dionigi 1:6f18bb7a77a5 16 *
dionigi 1:6f18bb7a77a5 17 * Implement PID! Most of this work is done in "pid_controller".
dionigi 1:6f18bb7a77a5 18 ***/
dionigi 1:6f18bb7a77a5 19 void MainController::update() {
dionigi 1:6f18bb7a77a5 20 // Update PID controller. This is the function you should be
dionigi 1:6f18bb7a77a5 21 // calling every systick.
dionigi 1:6f18bb7a77a5 22 m_pid->update();
dionigi 1:6f18bb7a77a5 23 }
dionigi 1:6f18bb7a77a5 24
dionigi 1:6f18bb7a77a5 25 /***
dionigi 1:6f18bb7a77a5 26 * Assignment 3: Part 1
dionigi 1:6f18bb7a77a5 27 *
dionigi 1:6f18bb7a77a5 28 * Get your mouse driving straight.
dionigi 1:6f18bb7a77a5 29 ***/
dionigi 1:6f18bb7a77a5 30 void MainController::driveStraight() {
dionigi 1:6f18bb7a77a5 31 /**
dionigi 1:6f18bb7a77a5 32 * Set an X goal and W goal correctly! This is discussed in the lecture slides.
dionigi 1:6f18bb7a77a5 33 * For help, see example code: pid/drive-straight.cpp
dionigi 1:6f18bb7a77a5 34 **/
rwgriffithv 3:35deb5c21b33 35 m_pid->set_goal_x(3600);
rwgriffithv 3:35deb5c21b33 36 m_pid->set_goal_w(0);
dionigi 1:6f18bb7a77a5 37 pc.printf("Driving straight\n");
rwgriffithv 3:35deb5c21b33 38 while(!m_pid->is_done());
dionigi 1:6f18bb7a77a5 39 }
dionigi 1:6f18bb7a77a5 40
dionigi 1:6f18bb7a77a5 41 /***
dionigi 1:6f18bb7a77a5 42 * Assignment 3: Part 2
dionigi 1:6f18bb7a77a5 43 *
dionigi 1:6f18bb7a77a5 44 * Get your mouse to turn, and drive a specific distance.
dionigi 1:6f18bb7a77a5 45 ***/
dionigi 1:6f18bb7a77a5 46 void MainController::turn(int deg) {
rwgriffithv 3:35deb5c21b33 47 m_pid->set_goal_x(0);
rwgriffithv 3:35deb5c21b33 48 m_pid->set_goal_w(4.65*deg);
dionigi 1:6f18bb7a77a5 49 pc.printf("Turning %d degrees\n", deg);
rwgriffithv 3:35deb5c21b33 50 while(!m_pid->is_done());
dionigi 1:6f18bb7a77a5 51 }
dionigi 1:6f18bb7a77a5 52
dionigi 1:6f18bb7a77a5 53 void MainController::moveCells(float n) {
dionigi 1:6f18bb7a77a5 54 /**
dionigi 1:6f18bb7a77a5 55 * For help, see example code: pid/full.cpp
dionigi 1:6f18bb7a77a5 56 **/
dionigi 1:6f18bb7a77a5 57 pc.printf("Moving %d cells\n", n);
dionigi 1:6f18bb7a77a5 58 }