Ok

Dependencies:   mbed_rtos_types Mutex mbed_rtos_storage mbed Semaphore

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Datas.cpp Source File

Datas.cpp

00001 #include "mbed.h"
00002  
00003 #include "Datas.h"
00004 
00005 using namespace std;
00006 extern DigitalOut ledR; 
00007 extern DigitalOut ledG; 
00008 extern DigitalOut ledB;
00009 extern Serial pc;
00010 extern float temp_value, hum_value;
00011 extern int clear_value, green_value, red_value, blue_value;
00012 extern float soil, light;
00013 extern int z;
00014 
00015 Datas::Datas(string measure_types){
00016  measure_type=measure_types;
00017 
00018 
00019  int i;
00020  for (i=0; i<120; i++){
00021  data_set[i]=0;
00022  }
00023  }
00024 
00025 //Stores all measured values in order to get the average. Prints minimum, maximum and average over the hour.
00026 void Datas::normalizeMinMaxAvg(int l){      
00027     float max_data = data_set[0];
00028     float min_data = data_set[0];
00029     int count = 0;
00030     float sum = 0;
00031     int i;
00032     float avg_data = 0;
00033 
00034     for (i=0; i < l; i++)
00035     {
00036         count++;
00037         sum += data_set[i];
00038 
00039         if ( data_set[i] > max_data)
00040         {
00041             max_data=data_set[i];
00042         }
00043 
00044         else if (data_set[i] < min_data)
00045         {
00046             min_data=data_set[i];
00047         }
00048     }
00049     avg_data = sum/count;
00050     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);
00051 } 
00052 
00053  void thresshold(){
00054      //Turn the colour led back OFF, because the order doesn't state it has to remain ON.
00055      ledR=1;
00056      ledG=1;
00057      ledB=1;
00058      if ((temp_value<21)||(temp_value>23)){ //Temperature thressholds 0ºC and 45ºC 
00059      pc.printf ("\n\r TEMPERATURE OUT OF LIMITS \n\r");
00060      //Led turns red
00061      ledR=0;
00062      ledG=1;   
00063      ledB=1;
00064      }
00065      else if ((hum_value<25)||(hum_value>75)){ //Humidity thressholds 25% and 75% 
00066      pc.printf ("\n\r HUMIDITY OUT OF LIMITS \n\r");
00067      //Led turns green
00068      ledR=1;
00069      ledG=0;   
00070      ledB=1;
00071      }
00072      else if (soil<10){ //Soil Moisture thresshold 10% 
00073      pc.printf ("\n\r SOIL MOISTURE OUT OF LIMITS \n\r");
00074      //Led turns blue
00075      ledR=1;
00076      ledG=1;   
00077      ledB=0;
00078      }
00079      else if (light<10){ //light thressholds 10% 
00080      pc.printf ("\n\r LIGHT INTENSITY OUT OF LIMITS \n\r");
00081      //Led turns yellow
00082      ledR=0;
00083      ledG=0;   
00084      ledB=1;
00085      }
00086      else if (z<0.2){ //z-axis thresshold: The plant is almost horizontal (z=0).
00087      pc.printf ("\n\r ORIENTATION OUT OF LIMITS \n\r"); 
00088      //Led turns purple
00089      ledR=0;
00090      ledG=1;   
00091      ledB=0;
00092      }
00093      else if ((clear_value<100)||(red_value<30)||(green_value<60)||(blue_value<30)){ //Colour thresshold (emphasis on the green)
00094      pc.printf ("\n\r COLOUR INTENSITY OUT OF LIMITS \n\r");
00095      //Led turns cyan
00096      ledR=1;
00097      ledG=0;   
00098      ledB=0;
00099      }
00100 }