Programme qui permet d'afficher la température en temps réel, grâce au capteur MCP9808 sur un microcontrôleur DISCO-F746NG. Le projet à été réalisé durant les cours d'interfaçage , en licence pro MECSE à l'IUT de Cachan.
Dependencies: TS_DISCO_F746NG mbed LCD_DISCO_F746NG BSP_DISCO_F746NG MCP9808 BUTTON_GROUP
main.cpp
- Committer:
- Lio93
- Date:
- 2019-06-04
- Revision:
- 13:eb0af974f19a
- Parent:
- 12:e2bb579c4455
File content as of revision 13:eb0af974f19a:
//--------------------------------------------------------------- // Demo program of Button class and ButtonGroup class // // 2016/02/22, Copyright (c) 2016 MIKAMI, Naoki //--------------------------------------------------------------- #include "button_group.hpp" #include "MCP9808.h" using namespace Mikami; TS_DISCO_F746NG ts_; LCD_DISCO_F746NG lcd_; Serial pc(USBTX, USBRX); // tx, rx MCP9808 capteur(D14, D15); //: i2c(sda, scl) int main() { // ---------------------------------------INITIALISATION DES VARIABLES--------------------------------------------------- float temperature, kelvin, fahrenheit; const int Y0 = 5; const int X1 = 30; const int Y1 = 100; int mode = 0; const uint32_t BACK_COLOR = 0xFF006A6C; // fond blue lcd_.Clear(BACK_COLOR); const int NUMBER_BUTTONS = 3; // nb de bouton const string STR[NUMBER_BUTTONS] = {"KELVIN", "CELSIUS", "FAHRENHEIT"}; ButtonGroup bGroup(lcd_, ts_, 10, Y0, 100, 40, LCD_COLOR_BLUE, BACK_COLOR, NUMBER_BUTTONS, STR, 5, 5, 3); // 100 taille de la case DigitalOut dOut(D7); int num; //-------------------------------------------------------------------------------------------------------------------------- while (true) { temperature =capteur.readTemp(); // reception de la valeur de la temperature fahrenheit = (temperature*9/5) + 32; // convertion kelvin = temperature +273.15; // convertion lcd_.DisplayStringAt(30, 200, (uint8_t *)"Medzo Owono Lionel", LEFT_MODE); lcd_.DisplayStringAt(30, 230, (uint8_t *)"Capteur de temperature", LEFT_MODE); dOut = 1; bool touched = bGroup.GetTouchedNumber(num, LCD_COLOR_DARKBLUE); // bouton actionné change de couleur dOut = 0; char str[20]; if (touched) { lcd_.SetFont(&Font16); lcd_.SetTextColor(LCD_COLOR_WHITE); if (num==0) // choix du mode 1pour ensuite aller au switch case coorespondant { mode = 1; lcd_.DisplayStringAt(X1, Y1, (uint8_t *)" ", CENTER_MODE); c } else if (num==1) // choix du mode 2 pour ensuite aller au switch case coorespondant { mode = 2; lcd_.DisplayStringAt(X1, Y1, (uint8_t *)" ", CENTER_MODE);// effacer l'ecriture précedente } else if (num==2) // choix du mode 3 pour ensuite aller au switch case coorespondant { mode = 3; lcd_.DisplayStringAt(X1, Y1, (uint8_t *)" ", CENTER_MODE);// effacer l'ecriture précedente } } switch (mode){ // choix du mode, avec affichage en continue case 1: sprintf(str, "%.2f K", kelvin); lcd_.DisplayStringAt(X1, Y1, (uint8_t *)str, CENTER_MODE); break; case 2: sprintf(str, "%.2f C", temperature); lcd_.DisplayStringAt(X1, Y1, (uint8_t *)str, CENTER_MODE); break; case 3: sprintf(str, "%.2f F",fahrenheit ); lcd_.DisplayStringAt(X1, Y1, (uint8_t *)str, CENTER_MODE); break; } wait(0.01f); } }