#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <SPI.h>
// Pin definitions
#define TFT_CS 33
#define TFT_DC 21
#define TFT_RST 35
#define TFT_LED 13
#define BUTTON_PIN 26
// Create display object
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
// Variables to track display state and button press
volatile bool displayOn = true;
volatile bool buttonPressed = false;
// Button interrupt service routine
void IRAM_ATTR handleButtonPress() {
buttonPressed = true;
}
void setup() {
Serial.begin(115200);
// Initialize display
tft.begin();
tft.fillScreen(ILI9341_BLACK);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.setCursor(0, 0);
tft.println("Ecran 1");
// Initialize backlight pin
pinMode(TFT_LED, OUTPUT);
digitalWrite(TFT_LED, HIGH); // Turn on backlight initially
// Initialize button pin
pinMode(BUTTON_PIN, INPUT_PULLUP);
// Attach interrupt to button pin
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), handleButtonPress, FALLING);
}
void loop() {
// Check if button was pressed
if (buttonPressed) {
buttonPressed = false;
displayOn = !displayOn;
if (displayOn) {
// Turn on the display
digitalWrite(TFT_LED, HIGH); // Turn on backlight
tft.begin();
tft.fillScreen(ILI9341_BLACK);
tft.setCursor(0, 0);
tft.println("welcome");
} else {
// Turn off the display
tft.fillScreen(ILI9341_BLACK);
digitalWrite(TFT_LED, LOW); // Turn off backlight
}
// Example of something to display when on
if (displayOn) {
tft.setCursor(0, 20);
tft.println("Smart farm");
delay(5000);
}
}
}