Ok

Dependencies:   mbed_rtos_types Mutex mbed_rtos_storage mbed Semaphore

Committer:
daniwestside
Date:
Wed Nov 27 11:16:17 2019 +0000
Branch:
Sinthreads
Revision:
1:c9ef27da97b5
Parent:
0:85df64b421a8
Ok

Who changed what in which revision?

UserRevisionLine numberNew contents of line
daniwestside 0:85df64b421a8 1 #include "mbed.h"
daniwestside 0:85df64b421a8 2
daniwestside 0:85df64b421a8 3 #include "Datas.h"
daniwestside 0:85df64b421a8 4
daniwestside 0:85df64b421a8 5 using namespace std;
daniwestside 0:85df64b421a8 6 extern DigitalOut ledR;
daniwestside 0:85df64b421a8 7 extern DigitalOut ledG;
daniwestside 0:85df64b421a8 8 extern DigitalOut ledB;
daniwestside 0:85df64b421a8 9 extern Serial pc;
daniwestside 0:85df64b421a8 10 extern float temp_value, hum_value;
daniwestside 0:85df64b421a8 11 extern int clear_value, green_value, red_value, blue_value;
daniwestside 0:85df64b421a8 12 extern float soil, light;
daniwestside 0:85df64b421a8 13 extern int z;
daniwestside 0:85df64b421a8 14
daniwestside 0:85df64b421a8 15 Datas::Datas(string measure_types){
daniwestside 0:85df64b421a8 16 measure_type=measure_types;
daniwestside 0:85df64b421a8 17
daniwestside 0:85df64b421a8 18
daniwestside 0:85df64b421a8 19 int i;
daniwestside 0:85df64b421a8 20 for (i=0; i<120; i++){
daniwestside 0:85df64b421a8 21 data_set[i]=0;
daniwestside 0:85df64b421a8 22 }
daniwestside 0:85df64b421a8 23 }
daniwestside 0:85df64b421a8 24
daniwestside 0:85df64b421a8 25 //Stores all measured values in order to get the average. Prints minimum, maximum and average over the hour.
daniwestside 0:85df64b421a8 26 void Datas::normalizeMinMaxAvg(int l){
daniwestside 0:85df64b421a8 27 float max_data = data_set[0];
daniwestside 0:85df64b421a8 28 float min_data = data_set[0];
daniwestside 0:85df64b421a8 29 int count = 0;
daniwestside 0:85df64b421a8 30 float sum = 0;
daniwestside 0:85df64b421a8 31 int i;
daniwestside 0:85df64b421a8 32 float avg_data = 0;
daniwestside 0:85df64b421a8 33
daniwestside 0:85df64b421a8 34 for (i=0; i < l; i++)
daniwestside 0:85df64b421a8 35 {
daniwestside 0:85df64b421a8 36 count++;
daniwestside 0:85df64b421a8 37 sum += data_set[i];
daniwestside 0:85df64b421a8 38
daniwestside 0:85df64b421a8 39 if ( data_set[i] > max_data)
daniwestside 0:85df64b421a8 40 {
daniwestside 0:85df64b421a8 41 max_data=data_set[i];
daniwestside 0:85df64b421a8 42 }
daniwestside 0:85df64b421a8 43
daniwestside 0:85df64b421a8 44 else if (data_set[i] < min_data)
daniwestside 0:85df64b421a8 45 {
daniwestside 0:85df64b421a8 46 min_data=data_set[i];
daniwestside 0:85df64b421a8 47 }
daniwestside 0:85df64b421a8 48 }
daniwestside 0:85df64b421a8 49 avg_data = sum/count;
daniwestside 0:85df64b421a8 50 pc.printf("\n\r%s:\n\r Max:%.1f\t Min:%.1f\t Avg:%.1f\n\r", measure_type, max_data, min_data, avg_data);
daniwestside 0:85df64b421a8 51 }
daniwestside 0:85df64b421a8 52
daniwestside 0:85df64b421a8 53 void thresshold(){
daniwestside 0:85df64b421a8 54 //Turn the colour led back OFF, because the order doesn't state it has to remain ON.
daniwestside 0:85df64b421a8 55 ledR=1;
daniwestside 0:85df64b421a8 56 ledG=1;
daniwestside 0:85df64b421a8 57 ledB=1;
daniwestside 0:85df64b421a8 58 if ((temp_value<21)||(temp_value>23)){ //Temperature thressholds 0ºC and 45ºC
daniwestside 0:85df64b421a8 59 pc.printf ("\n\r TEMPERATURE OUT OF LIMITS \n\r");
daniwestside 0:85df64b421a8 60 //Led turns red
daniwestside 0:85df64b421a8 61 ledR=0;
daniwestside 0:85df64b421a8 62 ledG=1;
daniwestside 0:85df64b421a8 63 ledB=1;
daniwestside 0:85df64b421a8 64 }
daniwestside 0:85df64b421a8 65 else if ((hum_value<25)||(hum_value>75)){ //Humidity thressholds 25% and 75%
daniwestside 0:85df64b421a8 66 pc.printf ("\n\r HUMIDITY OUT OF LIMITS \n\r");
daniwestside 0:85df64b421a8 67 //Led turns green
daniwestside 0:85df64b421a8 68 ledR=1;
daniwestside 0:85df64b421a8 69 ledG=0;
daniwestside 0:85df64b421a8 70 ledB=1;
daniwestside 0:85df64b421a8 71 }
daniwestside 0:85df64b421a8 72 else if (soil<10){ //Soil Moisture thresshold 10%
daniwestside 0:85df64b421a8 73 pc.printf ("\n\r SOIL MOISTURE OUT OF LIMITS \n\r");
daniwestside 0:85df64b421a8 74 //Led turns blue
daniwestside 0:85df64b421a8 75 ledR=1;
daniwestside 0:85df64b421a8 76 ledG=1;
daniwestside 0:85df64b421a8 77 ledB=0;
daniwestside 0:85df64b421a8 78 }
daniwestside 0:85df64b421a8 79 else if (light<10){ //light thressholds 10%
daniwestside 0:85df64b421a8 80 pc.printf ("\n\r LIGHT INTENSITY OUT OF LIMITS \n\r");
daniwestside 0:85df64b421a8 81 //Led turns yellow
daniwestside 0:85df64b421a8 82 ledR=0;
daniwestside 0:85df64b421a8 83 ledG=0;
daniwestside 0:85df64b421a8 84 ledB=1;
daniwestside 0:85df64b421a8 85 }
daniwestside 0:85df64b421a8 86 else if (z<0.2){ //z-axis thresshold: The plant is almost horizontal (z=0).
daniwestside 0:85df64b421a8 87 pc.printf ("\n\r ORIENTATION OUT OF LIMITS \n\r");
daniwestside 0:85df64b421a8 88 //Led turns purple
daniwestside 0:85df64b421a8 89 ledR=0;
daniwestside 0:85df64b421a8 90 ledG=1;
daniwestside 0:85df64b421a8 91 ledB=0;
daniwestside 0:85df64b421a8 92 }
daniwestside 0:85df64b421a8 93 else if ((clear_value<100)||(red_value<30)||(green_value<60)||(blue_value<30)){ //Colour thresshold (emphasis on the green)
daniwestside 0:85df64b421a8 94 pc.printf ("\n\r COLOUR INTENSITY OUT OF LIMITS \n\r");
daniwestside 0:85df64b421a8 95 //Led turns cyan
daniwestside 0:85df64b421a8 96 ledR=1;
daniwestside 0:85df64b421a8 97 ledG=0;
daniwestside 0:85df64b421a8 98 ledB=0;
daniwestside 0:85df64b421a8 99 }
daniwestside 0:85df64b421a8 100 }