Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed DRV88255 TextLCD Ping mbed-rtos
Revision 8:24b057cbcb53, committed 2016-06-10
- Comitter:
- sbouber1
- Date:
- Fri Jun 10 12:38:54 2016 +0000
- Parent:
- 6:067e999b9c6e
- Commit message:
- Started threading stuff
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Controller.h Fri Jun 10 12:38:54 2016 +0000
@@ -0,0 +1,10 @@
+#ifndef __CONTROLLER_H__
+#define __CONTROLLER_H__
+
+class Controller {
+ public:
+ virtual void update() = 0;
+ virtual float getValue() = 0;
+};
+
+#endif
\ No newline at end of file
--- a/MotorController.cpp Fri Jun 10 10:53:56 2016 +0000
+++ b/MotorController.cpp Fri Jun 10 12:38:54 2016 +0000
@@ -26,7 +26,7 @@
stpr_mtr1.settings(1 / MICROSTEPS_PER_STEP, LEFT, i);
}
- wait(3);
+ /*wait(3);
for (int i = 500; i < MAX_SPEED; i += 5) {
stpr_mtr1.settings(1 / MICROSTEPS_PER_STEP, RIGHT, i);
@@ -39,7 +39,7 @@
for (int i = 8000; i > 500; i -= 5) {
stpr_mtr1.settings(1 / MICROSTEPS_PER_STEP, RIGHT, i);
}
- wait(3);
+ wait(3);*/
}
void MotorController::test2()
--- a/SalinityController.cpp Fri Jun 10 10:53:56 2016 +0000
+++ b/SalinityController.cpp Fri Jun 10 12:38:54 2016 +0000
@@ -13,12 +13,21 @@
float analogin_value = 0;
float ppt = 0;
+ Timer t;
+
+ t.start();
+
// Read 0-1.0 value
for(int i = 0; i < N; i++)
{
analogin_value += salinity_sensor.read();
}
- // Average 10 sensor values
+
+ t.stop();
+
+ printf("We did %d averages of salinity in %d ms\n", N, t.read_ms());
+
+ // Average N sensor values
analogin_value /= (float) N;
ppt = analoginToPPT(analogin_value);
--- a/TemperatureController.cpp Fri Jun 10 10:53:56 2016 +0000
+++ b/TemperatureController.cpp Fri Jun 10 12:38:54 2016 +0000
@@ -1,4 +1,5 @@
#include "TemperatureController.h"
+#include "rtos.h"
AnalogIn temperature_sensor(p20);
DigitalOut heater(p18);
@@ -8,18 +9,37 @@
printf("Initiate Temperature Controller\r\n");
}
+
+float TemperatureController::getValue() {
+ return this->temperature;
+}
+
+void TemperatureController::update() {
+ this->temperature = readSensor();
+}
+
// Function reads sensor values and averages N sensor values
float TemperatureController::readSensor()
{
float analogin_value = 0;
float temperature = 0;
+ Timer t;
+
+ t.start();
+
// Read 0-1.0 value
for(int i = 0; i < N; i++)
{
analogin_value += temperature_sensor.read();
+ Thread::wait(100);
}
- // Average 10 sensor values
+
+ t.stop();
+
+ printf("We did %d averages of temperature in %d ms\r\n", N, t.read_ms());
+
+ // Average N sensor values
analogin_value /= (float) N;
temperature = analoginToCelsius(analogin_value);
@@ -66,15 +86,6 @@
printf("Temperature: %f Celsius\r\n", temperature);
}
-float TemperatureController::getTemperature()
-{
- float temperature = 0;
-
- temperature = readSensor();
-
- return temperature;
-}
-
float TemperatureController::getOffset(float voltage)
{
float denominator_voltage, numerator_voltage, ratio, interpolation;
@@ -114,9 +125,11 @@
{
if(readSensor() < 32.0f)
{
- heater = 1;
+ //heater = 1;
+ printf("Should set heater to 1\r\n");
} else {
- heater = 0;
+ //heater = 0;
+ printf("Should set heater to 0\r\n");
}
}
\ No newline at end of file
--- a/TemperatureController.h Fri Jun 10 10:53:56 2016 +0000
+++ b/TemperatureController.h Fri Jun 10 12:38:54 2016 +0000
@@ -4,21 +4,30 @@
#include "mbed.h"
#include "stdio.h"
+#include "Controller.h"
+
#define N 50
-class TemperatureController {
+class TemperatureController : public Controller {
public:
TemperatureController();
- static void displayTemperature();
- static void controlHeater();
- static float getTemperature();
+ virtual float getValue();
+
+ virtual void update();
private:
+ float temperature;
+
static float readSensor();
+
static float analoginToCelsius(float);
+ static void controlHeater();
+
static float getOffset(float);
+
+ static void displayTemperature();
};
#endif
\ No newline at end of file
--- a/main.cpp Fri Jun 10 10:53:56 2016 +0000
+++ b/main.cpp Fri Jun 10 12:38:54 2016 +0000
@@ -2,16 +2,49 @@
#include "TemperatureController.h"
#include "MotorController.h"
#include "LCDController.h"
+#include "ProximityController.h"
#include "mbed.h"
+#include "rtos.h"
+
+typedef struct Controllers {
+ TemperatureController *temperature;
+ SalinityController *salinity;
+ ProximityController *proximity;
+ LCDController *lcd;
+
+} Controllers;
+
+
+
+/*
+ Continuously update controller every 100 ms
+*/
+void controller_thread(void const *args) {
+ Controller *controller = (Controller*)args;
+
+ while(1) {
+ controller->update();
+ Thread::wait(100);
+ }
+
+}
+
int main()
{
int count;
- SalinityController salt;
TemperatureController temperature;
+ Thread t1(controller_thread, (Controller*)&temperature);
+
+ //SalinityController salt;
+ //Thread t2(controller_thread, (Controller*)&salt);
+
+
+
MotorController motor;
+ // Keep LCD controller outside thread
LCDController lcd;
// for(int i = 0; i < 20; i++)
@@ -19,8 +52,8 @@
// motor.test();
// motor.test2();
// }
- lcd.splash();
- while(1) {
+ //lcd.splash();
+ //while(1) {
// printf("%d> ", count);
// salt.displayPPT();
@@ -29,9 +62,27 @@
// temperature.controlHeater();
- lcd.updateScreen(temperature.getTemperature(),salt.getVoltage());
- count++;
+ // lcd.updateScreen(temperature.getTemperature(),salt.getVoltage());
+ // count++;
- wait(0.5);
+ // wait(0.5);
+ //}
+
+ float s = 0.0;
+ float t = 0.0;
+
+ while(1) {
+ lcd.splash();
+ Thread::wait(1000);
+
+ t = temperature.getValue();
+ // s=...
+
+ printf("Grabbing temperature value from main thread: %f\r\n", t);
+ //printf("Grabbing salinity value from main thread: %f\n", salt.getValue());
+
+ lcd.updateScreen(t, s);
+
+ motor.test();
}
}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Fri Jun 10 12:38:54 2016 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/mbed_official/code/mbed-rtos/#4c105b8d7cae