PROJET_DISTANCE_AQUARIUM

Dependencies:   mbed BSP_DISCO_F746NG

main.cpp

Committer:
rcirier
Date:
2021-06-23
Revision:
0:1a5daf7947bc

File content as of revision 0:1a5daf7947bc:

include "mbed.h"
#include "stm32746g_discovery_lcd.h"


DigitalOut trig(D2); //pin trig 1er capteur sur D2
DigitalIn echo(D3); //pin echo 1er capteur sur D3
DigitalOut trig2(D4); //pin trig 2eme capteur sur D4
DigitalIn echo2(D5); //pin echo 2eme capteur sur D5
Timer t; //timer 1er capteur
Timer t2; //timer 2eme capteur
Serial pc(USBTX,USBRX); //liaison
#define vitesse_son 343.595*100;

int main()
{
    char text[4]; //char distance 1er capteur
    char text2[4]; //char distance 2eme capteur
    double time, distance;
    double time2, distance2;
    
    BSP_LCD_Init(); //Affichage de tout le texte sur l'écran
    BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS);
    BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER);
    BSP_LCD_Clear(LCD_COLOR_BLACK);
    BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
    BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
    BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
    BSP_LCD_DisplayStringAt(0, 1, (uint8_t *)"Capteur de distance", CENTER_MODE);
    
    BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA);
    BSP_LCD_DisplayStringAt(0, 65, (uint8_t *)"en centimetre :", CENTER_MODE);
    
    BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA);
    BSP_LCD_DisplayStringAt(120, 170, (uint8_t *)"Dist:", CENTER_MODE);
    BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA);
    BSP_LCD_DisplayStringAt(-120, 170, (uint8_t *)"Dist:", CENTER_MODE);

    BSP_LCD_SetTextColor(LCD_COLOR_RED); // carré rouge
    BSP_LCD_DrawRect(300,150,125,120);
 
    BSP_LCD_SetTextColor(LCD_COLOR_GREEN); // carré vert
    BSP_LCD_DrawRect(50,150,125,120);
    
    BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA);
    BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"Avec pompe d'aquarium", CENTER_MODE);
    
    while(1) { 
        t.reset();
        trig = 1;
        time = 0;
        wait_us(10);
        trig = 0;
        if (echo == 1) {
            t.start();
            while(1) { // boucle while entiere 1er capteur

                if(echo == 0) {
                    t.stop();
                    time = t.read();
                    distance = time / 2.0 * vitesse_son; // opération conversion en distance
                    sprintf(text,"%1.1f",distance);
                    BSP_LCD_DisplayStringAt(120, 230, (uint8_t *)&text, CENTER_MODE); //Affichage valeur 1er capteur dans le carré de l'écran LCD
                    t.reset();
                    wait(1);
                    break;
                }
            }
        }
        t2.reset();
        trig2 = 1;
        time2 = 0;
        wait_us(10);
        trig2 = 0;
        if(echo2 == 1) {
            t2.start();
            while(1) { // boucle while entiere 2eme capteur

                if(echo2 == 0) {
                    t2.stop();
                    time2 = t2.read();
                    distance2 = time2 / 2.0 * vitesse_son; // opération conversion en distance
                    sprintf(text2,"%1.1f",distance2);
                    BSP_LCD_DisplayStringAt(-120, 230, (uint8_t *)&text2, CENTER_MODE); //Affichage valeur 2eme capteur dans le carré de l'écran LCD
                    t2.reset();
                    wait(1);
                    break;
                }
            }
        }
}
}