Capteur humi/temp
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG mbed
Revision 0:3d803817104a, committed 2018-06-21
- Comitter:
- theophile
- Date:
- Thu Jun 21 10:24:07 2018 +0000
- Commit message:
- Code projet Interfa?age - Capteur Temp/Humi
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BSP_DISCO_F746NG.lib Thu Jun 21 10:24:07 2018 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ST/code/BSP_DISCO_F746NG/#df2ea349c37a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LCD_DISCO_F746NG.lib Thu Jun 21 10:24:07 2018 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ST/code/LCD_DISCO_F746NG/#d44525b1de98
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TS_DISCO_F746NG.lib Thu Jun 21 10:24:07 2018 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ST/code/TS_DISCO_F746NG/#fe0cf5e2960f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jun 21 10:24:07 2018 +0000 @@ -0,0 +1,251 @@ +//Library +#include "mbed.h" +#include "TS_DISCO_F746NG.h" +#include "LCD_DISCO_F746NG.h" + +// Initialisation objet +LCD_DISCO_F746NG lcd; +TS_DISCO_F746NG ts; +I2C i2c (D14,D15); + +uint8_t texttp[30]; + uint8_t texthm[30]; + uint8_t status; + uint8_t idx; + uint8_t cleared = 0; + uint8_t prev_nb_touches = 0; + uint8_t event_press = 0; + uint16_t x, y; + uint16_t pos_y = 210; + uint16_t rayon = 0; + + int adress = 0x40 << 1; + int touchtp; + int touchhum; + + char ctemp[2] = {0x03,0x11}; + char chumi[2] = {0x03,0x01}; + char datatp[2] = { 0,0 }; + char datahu [2] = { 0,0 }; + + float temp = 0; + float temperature = 0; + float humi = 0; + float humidity = 0; + + int times = 0; + +int choice = 0; + +// Debug +//Serial pc(USBTX, USBRX); + +// Fonction d'affichage de l'interface +void Clear_avec_un_rectangle (void){ + + // Fond d'écran blanc + lcd.Clear(LCD_COLOR_LIGHTGRAY); + lcd.SetBackColor(LCD_COLOR_LIGHTGRAY); + + // Bonton rouge pour température + lcd.SetTextColor(LCD_COLOR_RED); + lcd.DrawRect(25,100,200,50); + lcd.SetFont(&Font24); + lcd.DisplayStringAt(33, 115, (uint8_t *)"TEMPERATURE", LEFT_MODE); + + // Bouton vert pour humitidé + lcd.SetTextColor(LCD_COLOR_BLUE); + lcd.DrawRect(250,100,200,50); + lcd.SetFont(&Font24); + lcd.DisplayStringAt(280, 115, (uint8_t *)"HUMIDITE", LEFT_MODE); + + // Titre de l'interface + lcd.SetTextColor(LCD_COLOR_BLACK); + lcd.SetFont(&Font20); + lcd.DisplayStringAt(0, 10, (uint8_t *)"Capteur Humidite & Temperature", CENTER_MODE); +} + +void humidi(void){ + lcd.SetBackColor(LCD_COLOR_LIGHTGRAY); + lcd.SetTextColor(LCD_COLOR_LIGHTGRAY); + lcd.FillCircle(235,215,50); + lcd.SetFont(&Font16); + sprintf((char*)texthm,"%0.1d %%",(int)humidity); + lcd.DisplayStringAt(0, pos_y, (uint8_t *)" ", CENTER_MODE); + lcd.SetTextColor(LCD_COLOR_BLACK); + lcd.DrawCircle(235,215,50); + lcd.SetTextColor(LCD_COLOR_BLUE); + rayon = 50*(humidity/100); + if(rayon>=50) + rayon =50; + lcd.FillCircle(235,215,rayon); + lcd.SetBackColor(LCD_COLOR_BLUE); + lcd.SetTextColor(LCD_COLOR_BLACK); + lcd.DisplayStringAt(0, pos_y, (uint8_t *)&texthm, CENTER_MODE); + // prev_nb_touches = TS_State.touchDetected; + cleared = 0; + x= 1; + +} + +void temper(void) { + lcd.SetBackColor(LCD_COLOR_LIGHTGRAY); + lcd.SetTextColor(LCD_COLOR_LIGHTGRAY); + lcd.FillCircle(235,215,50); + + sprintf((char*)texttp,"%0.1d c",(int)temperature); + lcd.DisplayStringAt(0, pos_y, (uint8_t *)" ", CENTER_MODE); + + lcd.SetTextColor(LCD_COLOR_BLACK); + lcd.DrawCircle(235,215,50); + + lcd.SetTextColor(LCD_COLOR_RED); + rayon = 50*(temperature/50); + if(rayon>=50) + rayon =50; + lcd.FillCircle(235,215,rayon); + lcd.SetBackColor(LCD_COLOR_RED); + lcd.SetTextColor(LCD_COLOR_BLACK); + + lcd.SetFont(&Font16); + lcd.SetTextColor(LCD_COLOR_BLACK); + lcd.DisplayStringAt(0, pos_y, (uint8_t *)&texttp, CENTER_MODE); + + // prev_nb_touches = TS_State.touchDetected; + cleared = 0; + x = 2; +} + +void select_etat(void){ + if ((x == 1) && (times == 10)) + {humidi(); + times = 0;} + + else if ((x == 2) && (times == 10)) + {temper(); + times = 0;} + + + } + + +//add capt 0x40 +//f = 400kHz +//float temp = (capt/32) -50; + +// Fonction MAIN +int main() +{ + // Debug + //pc.baud(9600); + + // Paramétrage de l'I2C + i2c.frequency(100000); + + // Initialisation variable + TS_StateTypeDef TS_State; + + + + + // Affichage de l'interface + Clear_avec_un_rectangle(); + + while(1) { + select_etat(); + times = times + 1; + + // Demande de la valeur du registre température au capteur + i2c.write(adress ,ctemp ,2, 0); + wait_ms(35); + i2c.read(adress,datatp,2); + wait_ms(35); + temp = datatp[1]<<6; + temp = temp + (datatp[2]>>2); + temperature = (temp/32) - 50; + + // Debug + //pc.printf("\n\r temperature : %f",temperature); + //pc.printf("\n\r data1 : %d ",(datatp[1]<<6) + (datatp[2] >> 2)); + + wait_ms(35); + + // Demande de la valeur deu registre humidité + i2c.write(adress ,chumi ,2, 0); + wait_ms(35); + i2c.read(adress,datahu,2); + wait_us(35); + humi = datahu[1]<<4; + humi = humi + (datahu[2]>>4); + humidity = (humi/16) - 24; + + // Debug + //pc.printf("\n\r Humidity : %f %",humidity); + //pc.printf("\n\r data1 + data2 : %d ",(datahu[1]<<4) + (datahu[2]>>4)); + + wait_ms(35); + + // Détéction d'un apuie sur l'écran tactile + ts.GetState(&TS_State); + if (TS_State.touchDetected) { + + if (TS_State.touchDetected < prev_nb_touches) { + for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) { + lcd.ClearStringLine(idx); + } + } + prev_nb_touches = TS_State.touchDetected; + cleared = 0; + + // Enregistrement de la position de l'apuie + for (idx = 0; idx < TS_State.touchDetected; idx++) { + x = TS_State.touchX[idx]; + y = TS_State.touchY[idx]; + } + + // Détection d'un apuie sur le bouton humidité + if((x>250) && (x<450) && (y>=100) && (y<150)) { + touchhum=1; + touchtp=0; + } + + // Détection d'un apuie sur le bouton température + else if ((x>25) && (x<200)&&(y>=100)&&(y<150)) { + touchhum=0; + touchtp=1; + } + + // Si apuie sur le bouton humidité, affichage valeur envoyé par le capteur + if (touchhum==1 && touchtp==0) { + humidi(); + } + + // Si apuie sur le bouton température, affichage valeur envoyé par le capteur + else if (touchhum==0 && touchtp==1) { + temper(); + } + } + } +} + + + + + + + + + + + + + + + + + + + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Jun 21 10:24:07 2018 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/5aab5a7997ee \ No newline at end of file