Pour Marc la mignonne

Dependencies:   BSP_DISCO_F429ZI LCD_DISCO_F429ZI TS_DISCO_F429ZI mbed

main.cpp

Committer:
Alex_mln
Date:
2018-05-31
Revision:
0:fcce18d01987

File content as of revision 0:fcce18d01987:

#include "mbed.h"
#include "LCD_DISCO_F429ZI.h"
#include "TS_DISCO_F429ZI.h"

#include "Capteurs.h"
#include "fonctions.h"
#include "automatique.h"
#include "commandes.h"


LCD_DISCO_F429ZI lcd;
//LCD_DISCO_F429ZI lcd;
TS_DISCO_F429ZI ts;
TS_StateTypeDef tsState;

int vol_y=145;
bool test=false;
bool indice_depart=false;
uint16_t x, y;

bool var_manuel=false;
bool var_automatique=false;



void initialisation(){
    lcd.Clear(LCD_COLOR_WHITE);
      
      
    lcd.SetTextColor(LCD_COLOR_BLUE);
    lcd.FillRect(18,57,104,30);          //Rectangle calibrage
    lcd.SetTextColor(LCD_COLOR_RED);
    lcd.FillEllipse(65, 118, 45, 15);   //ellipse des modes
    lcd.FillRect(20, 180-35, 90, 40);    //Rectangle manuel
    lcd.FillRect(5, 230-35, 135, 40);    //Rectangle automatique
      
    //La vitesse :
    lcd.SetTextColor(LCD_COLOR_RED); 
    lcd.FillRect(200,80,2,180);
    lcd.SetTextColor(LCD_COLOR_BLACK); 
    lcd.FillRect(190,vol_y-15,20,30);
    lcd.SetBackColor(LCD_COLOR_WHITE);
    lcd.SetTextColor(LCD_COLOR_BLACK); 
    lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"V", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(8), (uint8_t *)"I", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"T", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(10), (uint8_t *)"E", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(11), (uint8_t *)"S", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(12), (uint8_t *)"S", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(13), (uint8_t *)"E", RIGHT_MODE);
    
    
    //Départ
    lcd.SetTextColor(LCD_COLOR_BLACK);
    lcd.FillEllipse(115, 292, 60, 23);
    lcd.SetTextColor(LCD_COLOR_GREEN);
    lcd.FillEllipse(115, 292, 55, 20); 
      
      
    //Ecriture  
    
    lcd.SetTextColor(LCD_COLOR_WHITE); 
    lcd.SetBackColor(LCD_COLOR_BLUE);
    lcd.DisplayStringAt(20,67,(uint8_t *)"Calibrage",LEFT_MODE);
    lcd.SetBackColor(LCD_COLOR_RED); 
    lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Turbo Poparcalex2", CENTER_MODE);
   
    lcd.DisplayStringAt(45, LINE(7), (uint8_t *)"Mode", LEFT_MODE);
    lcd.DisplayStringAt(35, LINE(10), (uint8_t *)"Manuel", LEFT_MODE);
    lcd.DisplayStringAt(15, LINE(13), (uint8_t *)"Automatique", LEFT_MODE);
    
    lcd.SetBackColor(LCD_COLOR_GREEN);
    lcd.SetTextColor(LCD_COLOR_BLACK);
    lcd.DisplayStringAt(0, LINE(18), (uint8_t *)"Depart", CENTER_MODE);
    
    test=true;
    wait(0.1);}
    

void manuel(){
    lcd.SetTextColor(LCD_COLOR_GREEN);
    lcd.FillRect(20, 180-35, 90, 40); 
    lcd.SetBackColor(LCD_COLOR_GREEN);
    lcd.SetTextColor(LCD_COLOR_BLACK); 
    lcd.DisplayStringAt(35, LINE(10), (uint8_t *)"Manuel", LEFT_MODE);
    var_manuel=true;
    
    lcd.SetTextColor(LCD_COLOR_RED);
    lcd.FillRect(5, 230-35, 135, 40); 
    lcd.SetBackColor(LCD_COLOR_RED);
    lcd.SetTextColor(LCD_COLOR_WHITE); 
    lcd.DisplayStringAt(15, LINE(13), (uint8_t *)"Automatique", LEFT_MODE);
    var_automatique=false;
    x=0;
    y=0;  }
    
    
void automatique(){
    lcd.SetTextColor(LCD_COLOR_RED);
    lcd.FillRect(20, 180-35, 90, 40); 
    lcd.SetBackColor(LCD_COLOR_RED);
    lcd.SetTextColor(LCD_COLOR_WHITE); 
    lcd.DisplayStringAt(35, LINE(10), (uint8_t *)"Manuel", LEFT_MODE);
    var_manuel=false;
    
    lcd.SetTextColor(LCD_COLOR_GREEN);
    lcd.FillRect(5, 230-35, 135, 40); 
    lcd.SetBackColor(LCD_COLOR_GREEN);
    lcd.SetTextColor(LCD_COLOR_BLACK); 
    lcd.DisplayStringAt(15, LINE(13), (uint8_t *)"Automatique", LEFT_MODE);
    var_automatique=true; 
    x=0;
    y=0; }
    
    
void vitesse(){
    lcd.SetTextColor(LCD_COLOR_WHITE); 
    lcd.FillRect(190,vol_y-15,20,30);
    lcd.SetTextColor(LCD_COLOR_RED); 
    lcd.FillRect(200,80,2,180);
    lcd.SetBackColor(LCD_COLOR_WHITE);
    lcd.SetTextColor(LCD_COLOR_BLACK); 
    lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"V", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(8), (uint8_t *)"I", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"T", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(10), (uint8_t *)"E", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(11), (uint8_t *)"S", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(12), (uint8_t *)"S", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(13), (uint8_t *)"E", RIGHT_MODE);
    lcd.SetTextColor(LCD_COLOR_BLACK); 
    vol_y=y;
    lcd.FillRect(190,vol_y-15,20,30);  
    if(y>999){ y=y/10; }
    int valeur=((274.0-y)/(274.0-83))*99;
    uint8_t text[7];
    sprintf((char*)text, "%d  ", valeur);
        lcd.DisplayStringAt(0, LINE(4), (uint8_t *)&text, RIGHT_MODE);  
    lcd.DisplayStringAt(0, LINE(4), (uint8_t *)"% ", RIGHT_MODE); 
    
    
    x=0;
    y=0; }
                

void depart(){
    lcd.Clear(LCD_COLOR_TRANSPARENT);
    lcd.SetBackColor(LCD_COLOR_TRANSPARENT);
    lcd.SetTextColor(LCD_COLOR_RED); 
    lcd.DisplayStringAt(0, LINE(2), (uint8_t *)"3", CENTER_MODE);  
    wait(1);
    lcd.DisplayStringAt(0, LINE(2), (uint8_t *)"2", CENTER_MODE);  
    wait(1);
    lcd.DisplayStringAt(0, LINE(2), (uint8_t *)"1", CENTER_MODE);  
    wait(1);
    lcd.DisplayStringAt(0, LINE(2), (uint8_t *)"EN MARCHE", CENTER_MODE);  
    
    lcd.SetBackColor(LCD_COLOR_RED);
    lcd.FillCircle(120, 180-20, 100);
    lcd.SetTextColor(LCD_COLOR_WHITE);
    lcd.DisplayStringAt(0, 170-20, (uint8_t *)"STOP", CENTER_MODE);  
    wait(0.5);
    indice_depart=true; 
    x=0;
    y=0;  }
        
        
void stop(){
     lcd.Clear(LCD_COLOR_WHITE);
         
     lcd.SetBackColor(LCD_COLOR_RED);
     lcd.SetTextColor(LCD_COLOR_WHITE); 
     lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"Turbo Poparcalex2", CENTER_MODE);
         
        //modes 
      lcd.SetTextColor(LCD_COLOR_RED);
      lcd.FillEllipse(65, 118, 45, 15);
      lcd.SetTextColor(LCD_COLOR_WHITE);
      lcd.DisplayStringAt(45, LINE(7), (uint8_t *)"Mode", LEFT_MODE);
      
        //vitesse
      lcd.SetTextColor(LCD_COLOR_RED); 
      lcd.FillRect(200,80,2,180);
      lcd.SetTextColor(LCD_COLOR_BLACK); 
      lcd.FillRect(190,vol_y-15,20,30);
      lcd.SetBackColor(LCD_COLOR_WHITE);
    lcd.SetTextColor(LCD_COLOR_BLACK); 
    lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"V", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(8), (uint8_t *)"I", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(9), (uint8_t *)"T", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(10), (uint8_t *)"E", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(11), (uint8_t *)"S", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(12), (uint8_t *)"S", RIGHT_MODE);
    lcd.DisplayStringAt(0, LINE(13), (uint8_t *)"E", RIGHT_MODE);
    
    //Calibrage
    lcd.SetTextColor(LCD_COLOR_BLUE);
    lcd.FillRect(18,57,104,30);
    lcd.SetTextColor(LCD_COLOR_WHITE); 
    lcd.SetBackColor(LCD_COLOR_BLUE);
    lcd.DisplayStringAt(20,67,(uint8_t *)"Calibrage",LEFT_MODE);
    
         
         //depart
       lcd.SetTextColor(LCD_COLOR_BLACK);
       lcd.FillEllipse(115, 292, 58, 23);
       lcd.SetTextColor(LCD_COLOR_GREEN);
       lcd.FillEllipse(115, 292, 55, 20); 
       lcd.SetBackColor(LCD_COLOR_GREEN);
       lcd.SetTextColor(LCD_COLOR_BLACK);
       lcd.DisplayStringAt(0, LINE(18), (uint8_t *)"Depart", CENTER_MODE);    
         
       if(var_manuel==true){
            manuel();}
            
       else if(var_automatique==true){
            automatique();}
       
       else{ 
            lcd.SetTextColor(LCD_COLOR_RED);
            lcd.FillRect(20, 180-35, 90, 40);    //Rectangle manuel
            lcd.FillRect(5, 230-35, 135, 40);    //Rectangle automatique
             
            lcd.SetBackColor(LCD_COLOR_RED);
            lcd.SetTextColor(LCD_COLOR_WHITE);  
    
            lcd.DisplayStringAt(35, LINE(10), (uint8_t *)"Manuel", LEFT_MODE);
            lcd.DisplayStringAt(15, LINE(13), (uint8_t *)"Automatique", LEFT_MODE);}
        indice_depart=false;
        x=0;
        y=0;   }


void detection(){
     x = tsState.X;
        y = tsState.Y;
        uint8_t text[7];
        sprintf((char*)text, "%d; %d", x, y);
        lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);   }





int main()
{      //screen_init();
    if(test==false){
        initialisation();}
    while(1){
        
    uint8_t status= ts.Init(lcd.GetXSize(), lcd.GetYSize());
    
        if(status != TS_OK){ erreur(); }

        ts.GetState(&tsState);   
        if(tsState.TouchDetected){
            detection();  }
    
    
        if((x<113 && x>13) && (y>189-35 && y<222-35) && indice_depart==false){
            manuel();}
       
        if((x<144 && x>2) && (y>240-35 && y<275-35) && indice_depart==false){
            automatique();}
       
        if((x<217 && x>193) && (y>81 && y<265) && indice_depart==false){
            vitesse();}
    
        if((x<182 && x>59) && (y>273 && y<318) && indice_depart==false){
            depart();
            
            if(var_automatique==true){
                    recup_vitesse(vol_y);
                    go_automatique();}
          //  else if(var_manuel==true){
          //          test=go_manuel();}}
            stop(); }
        
     /*   if((x<225 && x>12) && (y>78-20 && y<288-20) && indice_depart==true){
            stop();}
    */
    
    
    
        if((x<125 && x>10 ) && (y>61  && y<88) && indice_depart==false){
             calibrage();
             stop();}
    
    
        wait(0.05);
    
    
    
    }
}