Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_GFX.h> //Librairie ecran tft ADAFRUIT
- #include <SPI.h>
- #include <Wire.h>
- #include <Adafruit_ILI9341.h>
- #include <Adafruit_STMPE610.h> //Librairie gestion tacttile de l'ecran
- #define TS_MINX 150
- #define TS_MINY 130
- #define TS_MAXX 3800
- #define TS_MAXY 4000
- #define STMPE_CS 8
- Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);
- #define TFT_CS 10
- #define TFT_DC 9
- Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
- int BrocheCapteur = 30; // Broche detecteur d'obstacle IR
- #define BrocheLedRougeTemoinPresences 22 // Broche Led qui s'allume lors d'une presence
- #define PressionMin 5 // Pression Min et Max acceptées
- #define PressionMax 1000
- uint16_t g_identifier; // Identifiant de l'écran TFT
- uint8_t OrientationTFT = 1; // Variable contenant le sens d'affichage de l'écran TFT
- unsigned long tempoPression = 0; // Début de la temporisation entre deux pressions sur l'écran tactile TFT
- int PageCourante = 0; // Page courante
- int LastPageCourante = -1; // Dernière Page courante
- boolean EtatCapteur = LOW; // Indicateur d'état du fonctionnement du ventilateur
- boolean LastEtatCapteur = HIGH; // Indicateur du dernier état du fonctionnement du ventilateur
- int16_t coulBoutonCapteur; // Couleur courante du bouton "CAPTEUR" de la Page 0
- void setup ()
- {
- pinMode (BrocheCapteur, INPUT) ; // Configure les broches en entrées
- pinMode (BrocheLedRougeTemoinPresences, OUTPUT); // Configure les broches en sorties
- Serial.begin(9600); // Démarre la communication série avec la console
- tft.begin(); // Initialise l'écran TFT
- tft.fillScreen(ILI9341_BLACK); // Initialise la couleur du fond d'écran
- tft.setRotation(1);
- if (!ts.begin()) {
- while (1);
- }
- }
- void loop (){//******************************************************
- //*********************************************************************
- GestionTactile ();//****************************************************//Appelle la fonction de gestion du mode tactile
- //*******************************************************************
- if (PageCourante == 0)//**********// Si la Page courante 0 est sélectionnée
- //******************************************************************
- {
- if (PageCourante != LastPageCourante) // Si la Page courante a changé
- {
- if (LastEtatCapteur != EtatCapteur) // Si l'indicateur d'état du fonctionnement du ventilateur a changé
- {
- if (EtatCapteur) {coulBoutonCapteur = ILI9341_BLUE;} else {coulBoutonCapteur =ILI9341_RED;} // Sélectionne la couleur du bouton "CAPTEUR"
- tft.setTextColor(ILI9341_WHITE); tft.setTextSize(2); // Définit la couleur et la taille du texte
- tft.fillRoundRect(10, 75, 142, 70, 12, coulBoutonCapteur); // Affiche le Bouton "VENTILATEUR"
- tft.drawRoundRect(8, 73, 146, 74, 12, coulBoutonCapteur);
- tft.setCursor(20, 80); tft.print("DETECTEUR"); // Affiche le texte "DETECTEUR"
- tft.setCursor(50, 100); tft.print("DE"); // Affiche le texte "DE"
- tft.setCursor(20, 120); tft.print("PRESENCES"); // Affiche le texte "PRESENCES"
- LastEtatCapteur = EtatCapteur; // Mémorise l'indicateur du dernier état du fonctionnement du ventilateur
- }
- }
- }
- }
- //*********************************************************************
- //*** Fonction Gestion Tactile de l'écran TFT *************************
- //*********************************************************************
- void GestionTactile ()//***********************************************
- {
- if (ts.bufferEmpty()) {
- return; // Sort de la fonction
- }
- TS_Point p = ts.getPoint();
- if (p.z > PressionMin && p.z < PressionMax) // *********************************// Si le niveau de pression sur l'écran tactile est correct
- {
- p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width()); // Convertit les coordonnées annalogiques tp.x et tp.y
- p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
- Serial.print(p.x); Serial.print(" , "); Serial.println(p.y);
- //*******************************************************************************
- if (PageCourante == 0 )// ++++++++++++++++++++++++++++++++++++++++++++ // Page courante 0 est sélectionnée => Page Principale
- {
- if (millis() - tempoPression >= 1000ul && tempoPression != 0 || tempoPression == 0) // ----------- // Si la temporisation entre deux pressions est écoulée ou Si elle est égale à 0
- {
- if (p.x > 150 && p.x < 200 && p.y > 40 && p.y < 70)// ...................................// Pression sur le bouton "CAPTEUR"
- {
- EtatCapteur = !EtatCapteur; // Inverse l'indicateur d'état du fonctionnement du Capteur
- digitalWrite(BrocheLedRougeTemoinPresences, EtatCapteur); // Active ou désactive la led témoin de fonctionnement du Capteur
- }
- tempoPression = millis(); // (Dé)Redémarre la temporisation entre deux pressions
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement