Measuring air flow, relative humidity & temperature, then showing results at TFT
Dependencies: FT800_2 HYT mbed
main.cpp
00001 #include "mbed.h" 00002 #include "FT_Platform.h" 00003 #include "HYT.h" 00004 #include "Display.h" 00005 00006 HYT SENSOR(PD6, PD7); // sda, scl [efm32hg_stk3400] 00007 FT800 TFT(PE10, PE11, PE12, PE13, PA1, PB11); // mosi, miso, sck, ss, int, pd [efm32hg_stk3400] 00008 AnalogIn ADC(PD4); // [efm32hg_stk3400] 00009 00010 Display disp(&TFT); 00011 00012 uint8_t humidity; 00013 float flow; 00014 int8_t temperature; 00015 00016 #define HUMIDITY_CORRECTION 15 00017 #define TEMPERATURE_CORRECTION -1 00018 00019 /*************************************************************************************************************************/ 00020 float calculateFlow(uint16_t resultADC) 00021 { 00022 uint16_t flowVoltage; 00023 if ((resultADC / 1000) - 32 >= 0) { 00024 flowVoltage = (resultADC / 1000) - 32; 00025 } else { 00026 flowVoltage = 0; 00027 } 00028 00029 float voltageToSpeed[31] = { 0, 0, 0, 0.1, 0.1, 0.1, 0.2, 0.2, 0.3, 0.3, 00030 0.4, 0.5, 0.6, 0.7, 0.8, 1.0, 1.2, 1.5, 2.0, 2.3, 2.8, 3.2, 3.9, 00031 4.5, 5.1, 5.8, 6.5, 7.4, 8.2, 9.1, 10 00032 }; 00033 float flowSpeed = voltageToSpeed[flowVoltage]; 00034 00035 return flowSpeed; 00036 } 00037 00038 /*************************************************************************************************************************/ 00039 uint8_t calculateHumidity(uint8_t humidityFromHYT) 00040 { 00041 uint8_t humidityFinal; 00042 if (humidityFromHYT + 15 >= 100) { 00043 humidityFinal = 100; 00044 } else { 00045 humidityFinal = humidityFromHYT + HUMIDITY_CORRECTION; 00046 } 00047 00048 return humidityFinal; 00049 } 00050 00051 /*************************************************************************************************************************/ 00052 int8_t calculateTemperature(int8_t temperatureFromHYT) 00053 { 00054 return temperatureFromHYT + TEMPERATURE_CORRECTION; 00055 } 00056 00057 /**************************************************************************************************************************/ 00058 int main() 00059 { 00060 disp.Calibration(); 00061 00062 disp.LoadImagesAndFonts(); 00063 disp.HandleAllBitmaps(); 00064 00065 disp.showHumidity = 1; 00066 disp.showFlow = 1; 00067 disp.showTemperature = 1; 00068 00069 // first point 00070 SENSOR.MRCommand(); 00071 wait_ms(100); 00072 SENSOR.DFCommand(); 00073 00074 while (1) { 00075 SENSOR.MRCommand(); 00076 00077 humidity = calculateHumidity((uint8_t) SENSOR.humidity); 00078 flow = calculateFlow(ADC.read_u16()); 00079 temperature = calculateTemperature((int8_t) SENSOR.temperature); 00080 00081 disp.UpdateDataToDraw(humidity, temperature, flow); 00082 disp.MainScreen(); 00083 00084 disp.GetTouch(); 00085 00086 SENSOR.DFCommand(); 00087 } 00088 }
Generated on Fri Jul 15 2022 19:43:07 by 1.7.2