Ok
Dependencies: mbed_rtos_types Mutex mbed_rtos_storage mbed Semaphore
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 }
Generated on Tue Jul 12 2022 22:06:19 by
1.7.2