#include "SPI.h"
#include <SD.h>
#include <TMRpcm.h>
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#include <Adafruit_FT6206.h>
#include <Wire.h>
Adafruit_FT6206 ctp = Adafruit_FT6206();
#define TFT_CLK 13
#define TFT_MISO 12
#define TFT_MOSI 11
#define TFT_CS 10
#define TFT_DC 9
#define TFT_RST 8
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
Adafruit_FT6206 ts = Adafruit_FT6206();
TMRpcm audio1;
TMRpcm audio2;
TMRpcm audio3;
#define MINPRESSURE 10
#define MAXPRESSURE 1000
#define LED_BUILTIN1 7
#define LED_BUILTIN2 6
#define LED_BUILTIN3 5
bool audio1ButtonActive = false;
bool audio2ButtonActive = false;
bool audio3ButtonActive = false;
bool previousButtonState = false;
void setup(void) {
pinMode(LED_BUILTIN1, OUTPUT);
pinMode(LED_BUILTIN2, OUTPUT);
pinMode(LED_BUILTIN3, OUTPUT);
while (!Serial);
Serial.begin(115200);
tft.begin();
if (!ctp.begin(40)) {
Serial.println("Couldn't start FT6206 touchscreen controller");
while (1);
}
drawButtons();
audio1.speakerPin = 2;
audio2.speakerPin = 3;
audio3.speakerPin = 4;
}
void loop() {
if (!ctp.touched()) {
previousButtonState = false; // Réinitialise l'état précédent lorsque le doigt est levé
return;
}
TS_Point touch = ctp.getPoint();
if (touch.x > MINPRESSURE && touch.y < MAXPRESSURE) {
int16_t x = map(touch.x, 0, 240, 240, 0);
int16_t y = map(touch.y, 0, 320, 320, 0);
// Bouton 1 (Vert)
if (touch.x > 10 && touch.x < 135 && touch.y > 210 && touch.y < 260) {
if (!previousButtonState) {
audio1ButtonActive = true;
audio2ButtonActive = false;
audio3ButtonActive = false;
performTask1(); // Exécute la tâche spécifique au bouton 1
}
previousButtonState = true;
}
// Bouton 2 (Bleu)
if (touch.x > 10 && touch.x < 135 && touch.y > 115 && touch.y < 170) {
if (!previousButtonState) {
audio1ButtonActive = false;
audio2ButtonActive = true;
audio3ButtonActive = false;
performTask2(); // Exécute la tâche spécifique au bouton 2
}
previousButtonState = true;
}
// Bouton 3 (Rouge)
if (touch.x > 10 && touch.x < 135 && touch.y > 20 && touch.y < 70) {
if (!previousButtonState) {
audio1ButtonActive = false;
audio2ButtonActive = false;
audio3ButtonActive = true;
performTask3(); // Exécute la tâche spécifique au bouton 3
}
previousButtonState = true;
}
}
}
void drawButtons() {
tft.fillScreen(ILI9341_BLACK);
// Bouton 1 (Vert)
tft.fillRoundRect(100, 60, 135, 50, 10, ILI9341_GREEN);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(3);
tft.setCursor(110, 80);
tft.println("Audio 1");
// Bouton 2 (Bleu)
tft.fillRoundRect(100, 155, 135, 50, 10, ILI9341_BLUE);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(3);
tft.setCursor(110, 180);
tft.println("Audio 2");
// Bouton 3 (Rouge)
tft.fillRoundRect(100, 250, 135, 50, 10, ILI9341_RED);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(3);
tft.setCursor(110, 275);
tft.println("Audio 3");
}
void performTask1() {
// Tâche spécifique au bouton 1
Serial.println("Bouton 1");
digitalWrite(LED_BUILTIN1, HIGH);
//digitalWrite(LED_BUILTIN2, LOW);
//digitalWrite(LED_BUILTIN3, LOW);
if (audio1ButtonActive) {
playAudio1();
} else {
audio1.stopPlayback();
}
}
void performTask2() {
// Tâche spécifique au bouton 2
Serial.println("Bouton 2");
//digitalWrite(LED_BUILTIN1, LOW);
digitalWrite(LED_BUILTIN2, HIGH);
//digitalWrite(LED_BUILTIN3, LOW);
if (audio2ButtonActive) {
playAudio2();
} else {
audio2.stopPlayback();
}
}
void performTask3() {
// Tâche spécifique au bouton 3
Serial.println("Bouton 3");
//digitalWrite(LED_BUILTIN1, LOW);
//digitalWrite(LED_BUILTIN2, LOW);
digitalWrite(LED_BUILTIN3, HIGH);
if (audio3ButtonActive) {
playAudio3();
} else {
audio3.stopPlayback();
}
}
void playAudio1() {
audio2.stopPlayback();
audio3.stopPlayback();
audio1.play("Arduino1.wav");
}
void playAudio2() {
audio1.stopPlayback();
audio3.stopPlayback();
audio2.play("Arduino2.wav");
}
void playAudio3() {
audio1.stopPlayback();
audio2.stopPlayback();
audio3.play("Arduino3.wav");
}