Advertisement
nikolas77

bouton tactile

Sep 28th, 2020
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Adafruit_GFX.h>                                                 //Librairie ecran tft ADAFRUIT
  2. #include <SPI.h>
  3. #include <Wire.h>    
  4. #include <Adafruit_ILI9341.h>
  5. #include <Adafruit_STMPE610.h>                                           //Librairie gestion tacttile de l'ecran
  6.  
  7. #define TS_MINX 150
  8. #define TS_MINY 130
  9. #define TS_MAXX 3800
  10. #define TS_MAXY 4000
  11.  
  12. #define STMPE_CS 8
  13. Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);
  14.  
  15. #define TFT_CS 10
  16. #define TFT_DC 9
  17. Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);  
  18.  
  19. int BrocheCapteur = 30;                                                     // Broche detecteur d'obstacle IR
  20. #define BrocheLedRougeTemoinPresences  22                                   // Broche Led qui s'allume lors d'une presence
  21.  
  22. #define PressionMin 5                                                    // Pression Min et Max acceptées
  23. #define PressionMax 1000                                                                                              
  24.  
  25. uint16_t g_identifier;                                                                // Identifiant de l'écran TFT
  26. uint8_t OrientationTFT = 1;                                                           // Variable contenant le sens d'affichage de l'écran TFT
  27.  
  28. unsigned long tempoPression = 0;                                                       // Début de la temporisation entre deux pressions sur l'écran tactile TFT
  29.  
  30. int PageCourante = 0;                                                                 // Page courante                                                                                            
  31. int LastPageCourante = -1;                                                            // Dernière Page courante
  32.  
  33. boolean EtatCapteur = LOW;                                                          // Indicateur d'état du fonctionnement du ventilateur                                          
  34. boolean LastEtatCapteur = HIGH;                                                     // Indicateur du dernier état du fonctionnement du ventilateur                                      
  35. int16_t coulBoutonCapteur;                                                          // Couleur courante du bouton "CAPTEUR" de la Page 0
  36.  
  37. void setup ()
  38. {
  39.   pinMode (BrocheCapteur, INPUT) ;                                                   // Configure les broches en entrées
  40.   pinMode (BrocheLedRougeTemoinPresences, OUTPUT);                                   // Configure les broches en sorties
  41.  
  42.   Serial.begin(9600);                                                              // Démarre la communication série avec la console
  43.  
  44.   tft.begin();                                                                     // Initialise l'écran TFT
  45.   tft.fillScreen(ILI9341_BLACK);                                                       // Initialise la couleur du fond d'écran
  46.   tft.setRotation(1);
  47.    
  48.  if (!ts.begin()) {
  49. while (1);
  50. }  
  51. }
  52. void loop (){//******************************************************
  53. //*********************************************************************
  54. GestionTactile ();//****************************************************//Appelle la fonction de gestion du mode tactile
  55. //*******************************************************************
  56.  if (PageCourante == 0)//**********// Si la Page courante 0 est sélectionnée
  57.  //******************************************************************
  58.  {
  59.     if (PageCourante != LastPageCourante)                              // Si la Page courante a changé
  60.     {
  61.         if (LastEtatCapteur != EtatCapteur)                       // Si l'indicateur d'état du fonctionnement du ventilateur a changé
  62.     {
  63.       if (EtatCapteur) {coulBoutonCapteur = ILI9341_BLUE;} else {coulBoutonCapteur =ILI9341_RED;}     // Sélectionne la couleur du bouton "CAPTEUR"                          
  64.       tft.setTextColor(ILI9341_WHITE); tft.setTextSize(2);                                           // Définit la couleur et la taille du texte          
  65.       tft.fillRoundRect(10, 75, 142, 70, 12, coulBoutonCapteur);                          // Affiche le Bouton "VENTILATEUR"                                
  66.       tft.drawRoundRect(8, 73, 146, 74, 12, coulBoutonCapteur);
  67.       tft.setCursor(20, 80); tft.print("DETECTEUR");                                        // Affiche le texte "DETECTEUR"
  68.       tft.setCursor(50, 100); tft.print("DE");                                              // Affiche le texte "DE"
  69.       tft.setCursor(20, 120); tft.print("PRESENCES");                                       // Affiche le texte "PRESENCES"                            
  70.      
  71.       LastEtatCapteur = EtatCapteur;                                                   // Mémorise l'indicateur du dernier état du fonctionnement du ventilateur
  72.    }
  73.   }
  74.  }
  75. }  
  76. //*********************************************************************
  77. //*** Fonction Gestion Tactile de l'écran TFT *************************
  78. //*********************************************************************
  79. void GestionTactile ()//***********************************************
  80. {
  81.   if (ts.bufferEmpty()) {
  82.     return;                                                                                                                     // Sort de la fonction
  83.   }
  84.   TS_Point p = ts.getPoint();
  85.  
  86.   if (p.z > PressionMin && p.z < PressionMax) // *********************************// Si le niveau de pression sur l'écran tactile est correct
  87.   {
  88.       p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());                              // Convertit les coordonnées annalogiques tp.x et tp.y
  89.       p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
  90.  
  91.    Serial.print(p.x);  Serial.print(" , ");  Serial.println(p.y);
  92. //*******************************************************************************
  93.  if (PageCourante == 0 )// ++++++++++++++++++++++++++++++++++++++++++++ // Page courante 0 est sélectionnée => Page Principale
  94.  {
  95.       if (millis() - tempoPression >= 1000ul && tempoPression != 0 || tempoPression == 0) // ----------- // Si la temporisation entre deux pressions est écoulée ou Si elle est égale à 0
  96.       {
  97.          if (p.x > 150 && p.x < 200 && p.y > 40 && p.y < 70)// ...................................// Pression sur le bouton "CAPTEUR"
  98.         {
  99.                                                                                                          
  100.             EtatCapteur = !EtatCapteur;                                               // Inverse l'indicateur d'état du fonctionnement du Capteur                                                                                                                              
  101.             digitalWrite(BrocheLedRougeTemoinPresences, EtatCapteur);              // Active ou désactive la led témoin de fonctionnement du Capteur                                      
  102.  
  103.         }
  104.          tempoPression = millis();                                                 // (Dé)Redémarre la temporisation entre deux pressions
  105.       }
  106.  }
  107.  }
  108.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement