Program for the water play project for the course Software Testing Practical 2016 given at the VU University

Dependencies:   mbed DRV88255 TextLCD Ping mbed-rtos

Committer:
sbouber1
Date:
Fri Jun 24 13:51:42 2016 +0000
Revision:
80:38e274c4dafa
Parent:
78:a44ad011dd41
final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sbouber1 28:f4a4ee58d57e 1 #ifndef __PIDCONTROLLER_H__
sbouber1 28:f4a4ee58d57e 2 #define __PIDCONTROLLER_H__
sbouber1 28:f4a4ee58d57e 3
sbouber1 65:b277b4067d4a 4 #include <iostream>
sbouber1 65:b277b4067d4a 5
sbouber1 28:f4a4ee58d57e 6 #include "mbed.h"
sbouber1 32:1e4919a44196 7 #include "DRV8825.h"
sbouber1 32:1e4919a44196 8 #include "stdio.h"
sbouber1 28:f4a4ee58d57e 9 #include "SensorController.h"
sbouber1 57:8dc3192ff150 10 #include "settings.h"
sbouber1 28:f4a4ee58d57e 11
sbouber1 28:f4a4ee58d57e 12
sbouber1 32:1e4919a44196 13 #define MAX_SPEED 8000
sbouber1 32:1e4919a44196 14 #define MICROSTEPS_PER_STEP 16
sbouber1 32:1e4919a44196 15
sbouber1 32:1e4919a44196 16 #define LEFT 1
sbouber1 32:1e4919a44196 17 #define RIGHT 0
sbouber1 32:1e4919a44196 18
sbouber1 38:930469a33001 19
sbouber1 28:f4a4ee58d57e 20 class PIDController : public Controller {
sbouber1 28:f4a4ee58d57e 21
sbouber1 28:f4a4ee58d57e 22
sbouber1 28:f4a4ee58d57e 23 public:
sbouber1 28:f4a4ee58d57e 24 PIDController(bool threaded, int interval_ms, SensorController *temp, SensorController *salt, SensorController *proximity)
sbouber1 28:f4a4ee58d57e 25 : Controller(threaded, interval_ms) {
sbouber1 28:f4a4ee58d57e 26 this->temp = temp;
sbouber1 28:f4a4ee58d57e 27 this->salt = salt;
sbouber1 28:f4a4ee58d57e 28 this->proximity = proximity;
joran 40:1668630544c7 29 this->pumping = false;
joran 44:7c932cc5991b 30 this->heating = false;
sbouber1 28:f4a4ee58d57e 31 }
sbouber1 28:f4a4ee58d57e 32
sbouber1 78:a44ad011dd41 33 ~PIDController();
sbouber1 78:a44ad011dd41 34
sbouber1 28:f4a4ee58d57e 35 virtual void update();
sbouber1 28:f4a4ee58d57e 36
sbouber1 57:8dc3192ff150 37 virtual std::string getName();
sbouber1 35:c9261391a995 38
sbouber1 57:8dc3192ff150 39 bool isHeating();
sbouber1 57:8dc3192ff150 40
sbouber1 57:8dc3192ff150 41 bool isPumping();
sbouber1 46:7e4c1f2ab76c 42
sbouber1 46:7e4c1f2ab76c 43 void doTestingStuff(int ml);
sbouber1 28:f4a4ee58d57e 44
sbouber1 28:f4a4ee58d57e 45 private:
sbouber1 28:f4a4ee58d57e 46 SensorController *temp;
sbouber1 28:f4a4ee58d57e 47 SensorController *salt;
sbouber1 57:8dc3192ff150 48 SensorController *proximity;
joran 40:1668630544c7 49
sbouber1 35:c9261391a995 50 bool heating;
joran 40:1668630544c7 51 bool pumping;
sbouber1 28:f4a4ee58d57e 52
sbouber1 57:8dc3192ff150 53 void pumpSaltWater(int ml);
sbouber1 32:1e4919a44196 54
sbouber1 57:8dc3192ff150 55 void pumpFreshWater(int ml);
sbouber1 32:1e4919a44196 56
sbouber1 57:8dc3192ff150 57 void pumpWater(DRV8825 *mtr, int ml);
sbouber1 32:1e4919a44196 58
sbouber1 32:1e4919a44196 59 float getMlSaltyWater(float, float);
sbouber1 32:1e4919a44196 60
sbouber1 32:1e4919a44196 61 float getMlFreshWater(float, float);
sbouber1 32:1e4919a44196 62
sbouber1 35:c9261391a995 63 float getSaltInGrams();
sbouber1 28:f4a4ee58d57e 64
sbouber1 57:8dc3192ff150 65 void setHeating(bool enabled);
sbouber1 28:f4a4ee58d57e 66 };
sbouber1 28:f4a4ee58d57e 67
sbouber1 28:f4a4ee58d57e 68
sbouber1 28:f4a4ee58d57e 69 #endif