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

SalinityController.cpp

Committer:
joran
Date:
2016-06-20
Revision:
66:133398875949
Parent:
58:b5f0c0f305ff
Child:
68:b769c0f23406

File content as of revision 66:133398875949:

#include "SalinityController.h"

static AnalogIn salinity_sensor(p19);
static DigitalOut alarmled(LED2);

//Read the sensor, update the local variable.
void SalinityController::update() {
    this->salinity = SalinityController::getAdjustedPPT();
}

//Return the value, this function does not update the value.
float SalinityController::getValue() {
    return this->salinity;    
}

//Read the voltage, get an average over NUM_MEASUREMENTS values defined in settings.h
float SalinityController::getVoltage() {
    float voltage = 0;
    float analogin_value = 0;
    
    // Read 0-1.0 value
    for(int i = 0; i < NUM_MEASUREMENTS; i++) {
        analogin_value += salinity_sensor.read();
        Thread::wait(MEASUREMENT_DELAY);
    }
    
    analogin_value /= (float) NUM_MEASUREMENTS;    
    voltage = analogin_value * 3.3f * (5.0f/3.0f);
    
    return voltage;
}

//Convert inputvolt to corrected sensor value
float SalinityController::voltToSensor(float inputvolt) {
    float slope = 0.7931723;
    float intercept = 0.0050561;
    
    float offset = (slope * inputvolt) - intercept;
    
    return inputvolt + offset;
}

//Convert corrected sensor value to actual PPT
float SalinityController::sensorToPPT(float inputvolt) {
    float slope = 11.53368;
    float intercept = 0.43580;    
    float minimum = 0.03778499;
    
    if (inputvolt <= minimum) 
        return 0.00;
    
    return (slope * inputvolt) - intercept;
}

//Chain the needed functions to get the proper PPT
float SalinityController::getAdjustedPPT() {
  return sensorToPPT(voltToSensor(getVoltage()));   
}


std::string SalinityController::getName() {
    return "SalinityController";
}

void SalinityController::setLed(bool value){
    if (value) alarmled = 1;
    if (!value) alarmled = 0;
}