Problème code écran tactile

Bonjour à tous,
Je suis entrain de réaliser un ascenseur avec un écran tactile elegoo
Voici mon problème,
Lorsque je badje pour la deuxième fois en tant que client non abonné il me me demande si je veut garde ou non le box, je clique sur oui, par exemple. Cette partie marche.

Lorsque je reviens encore une fois, il me redemande la même chose, si oui ou non je veut garder le box mais la la touche oui non et aide ne marchent pas, il faut que je clique en haut à gauche de l’écran (la ou il y a une flèche quand je suis dans la page aide, mais ici elle n’apparaît pas) et la je peut a présent appuyer sur oui ou non
Savez vous pourquoi ??
Voici mon code

//05/04/2019


////rfid

#include <deprecated.h>
#include <MFRC522.h>
#include <MFRC522Extended.h>
#include <require_cpp11.h>


//buzzer note////
#include "pitches.h"

int melody[] = {
  NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_A5, NOTE_B5, NOTE_C6
};
int dureenotes = 500;

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); //adresse, colonne, lignes



#include <Stepper.h>
#define SS_PIN 53
#define RST_PIN 42
MFRC522 rfid(SS_PIN, RST_PIN); // appel de la classe

String box[] = {"0", "0", "0", "0"};


///tour / min du moteur pas à pas //////
const int stepsPerRevolution = 1400;
Stepper myStepper(stepsPerRevolution, 26, 30, 28, 32);


////////////afficheur 7 segments/////////
const int A = 35;
const int B = 37;
const int C = 39;
const int D = 41;
const int E = 43;
const int F = 45;
const int G = 47;

//////
int ledrouge = 36;
int ledverte = 34;

int interrupteurconserver = 24;
int interrupteurliberer = 22;



int choixinterupteur = 0;
int choixinterupteur2 = 0;


//********ecrann*********//

#include <Elegoo_GFX.h>
#include <Elegoo_TFTLCD.h>
#include <TouchScreen.h>


#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

#define  BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
#define NAVY        0x000F      /*   0,   0, 128 */
#define DARKGREEN   0x03E0      /*   0, 128,   0 */
#define DARKCYAN    0x03EF      /*   0, 128, 128 */
#define MAROON      0x7800      /* 128,   0,   0 */
#define PURPLE      0x780F      /* 128,   0, 128 */
#define OLIVE       0x7BE0      /* 128, 128,   0 */
#define LIGHTGREY   0xC618      /* 192, 192, 192 */
#define DARKGREY    0x7BEF      /* 128, 128, 128 */
#define MAGENTA     0xF81F      /* 255,   0, 255 */
#define ORANGE      0xFD20      /* 255, 165,   0 */
#define GREENYELLOW 0xAFE5      /* 173, 255,  47 */
#define PINK        0xF81F

#define YP A3
#define XM A2
#define YM 9
#define XP 8

//Touch For New ILI9341 TP
#define TS_MINX 120
#define TS_MAXX 900

#define TS_MINY 70
#define TS_MAXY 920

#define STATUS_X 10
#define STATUS_Y 65

#define MINPRESSURE 10
#define MAXPRESSURE 1000

Elegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

int boutton;

unsigned long startMillis;  //some global variables available anywhere in the program
unsigned long currentMillis;


unsigned long differencecarteb0c19a1a = 0;
unsigned long startMilliscarteb0c19a1a = 0;

unsigned long differencecarte3c8a3f1f = 0;
unsigned long startMilliscarte3c8a3f1f = 0;





//****************************************SETUP************************************************************//

void setup() {

  Serial.begin(9600);

  //******ecran tactile *******//
  tft.reset();
  tft.begin(0x9341);
  tft.setRotation(1);


  tft.fillScreen(BLACK); //ecrab noir debut
  tft.drawRect(0, 0, 319, 240, WHITE);
  //Print "Bienvenue" Text
  tft.setCursor(56, 30); //largeur, hauteur
  tft.setTextColor(WHITE);
  tft.setTextSize(4);
  tft.print("Bienvenue");


  tft.setCursor(54, 100);
  tft.setTextColor(RED);
  tft.setTextSize(3);
  tft.print("Elevator-Box");

  //Create Red Button
  tft.fillRect(60, 180, 200, 40, LIGHTGREY);
  tft.drawRect(60, 180, 200, 40, WHITE);

  tft.setCursor(110, 188);
  tft.setTextColor(WHITE);
  tft.setTextSize(3);
  tft.print("badger");



  lcd.backlight();
  lcd.init();
  Serial.println("Voulez vous savoir le temps de chaque carte passé dans le box?  tapez son code : ");
  Serial.println("    ");

  pinMode (interrupteurconserver, INPUT_PULLUP); ///interrupteur 1
  pinMode (interrupteurliberer, INPUT_PULLUP); ///interrupteur 2



  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522
  pinMode(ledrouge, OUTPUT);
  digitalWrite(ledrouge, LOW);
  pinMode(ledverte, OUTPUT);
  digitalWrite(ledverte, LOW);


  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  // affiche 0 au début

  digitalWrite(A, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
  digitalWrite(D, LOW);
  digitalWrite(E, LOW);
  digitalWrite(F, HIGH);
  digitalWrite(G, HIGH);

  boutton = 0;

  lcd.begin(16, 2);
  lcd.clear();
}


//*********************************************************ecran acceuil *******************************************/
void ecranacceuil ()
{

  tft.fillScreen(BLACK); //ecrab noir debut
  tft.drawRect(0, 0, 319, 240, WHITE);
  //Print "Bienvenue" Text
  tft.setCursor(56, 30); //largeur, hauteur
  tft.setTextColor(WHITE);
  tft.setTextSize(4);
  tft.print("Bienvenue");


  tft.setCursor(54, 100);
  tft.setTextColor(RED);
  tft.setTextSize(3);
  tft.print("Elevator-Box");

  //Create Red Button
  tft.fillRect(60, 180, 200, 40, LIGHTGREY);
  tft.drawRect(60, 180, 200, 40, WHITE);

  tft.setCursor(110, 188);
  tft.setTextColor(WHITE);
  tft.setTextSize(3);
  tft.print("badger");

}


//*********************************************************ecran ecranbox libre ou pas *******************************************/
void ecranquestion ()
{
  tft.fillScreen(BLACK); //ecran noir debut

  tft.drawRect(0, 0, 319, 240, RED);

  //Je conserve mon box ?
  tft.setCursor(56, 30); //largeur, hauteur
  tft.setTextColor(WHITE);
  tft.setTextSize(3);
  tft.print("Je conserve");
  tft.setCursor(70, 60); //largeur, hauteur
  tft.setTextColor(WHITE);
  tft.setTextSize(3);
  tft.print(" mon box ?");

  //OUI
  tft.fillRect(40, 170, 100, 40, RED); //x:x coordonnée du point de départ // y:y coordonnée du point de départ /*/ w:la longueur du carré /*/   h:la largeur du carré couleur: la couleur du carré
  tft.drawRect(40, 170, 100, 40, WHITE);
  tft.setCursor(65, 178);
  tft.setTextColor(WHITE);
  tft.setTextSize(3);
  tft.print("oui");

  //NON
  tft.fillRect(176, 170, 100, 40, RED);
  tft.drawRect(176, 170, 100, 40, WHITE);
  tft.setCursor(183, 178);
  tft.setTextColor(WHITE);
  tft.setTextSize(3);
  tft.print(" non");

  //Aide ?
  tft.drawCircle(152, 129, 20, BLUE);
  tft.fillCircle(152, 129, 20, BLUE);
  tft.setCursor(145, 120);
  tft.setTextColor(WHITE);
  tft.setTextSize(3);
  tft.print("?");


}






//*********************************************************loop************************************************************//
void loop() {


  if (Serial.available()) {
    char lettres = Serial.read(); ///char =1 octet

    if (lettres == 'b') {
      Serial.print("difference temps carte b0c19a1a : ");
      Serial.print(differencecarteb0c19a1a);
      Serial.println("s ");

      Serial.print("prix : ");
      Serial.print((differencecarteb0c19a1a * 0.001));
      Serial.println("€");
    }


    if (lettres == '3') {
      Serial.print("difference temps carte 3c8a3f1f : ");
      Serial.print(differencecarte3c8a3f1f);
      Serial.println("s ");

      Serial.print("prix : ");
      Serial.print((differencecarte3c8a3f1f * 0.001));
      Serial.println("€");
    }
  }

Merci beaucoup d'avance
Bonne soirée

En plus du code, ce serait bien de poster une ou deux photos de ce qui s'affiche sur l'écran et aussi du montage.
C'est un projet scolaire ?

Voici la suite du code sinon c'est trop lourd

///////////////lecture carte /////////////////////

  // Si on ne detecte pas une carte on reboucle au debut
  if ( ! rfid.PICC_IsNewCardPresent())
    return;

  // as t'on lu la carte
  if ( ! rfid.PICC_ReadCardSerial())
    return;

  // recuperation de l'UID et concaténation de sa valeur en hex dans un string
  String myKey = String(rfid.uid.uidByte[0], HEX)  + String(rfid.uid.uidByte[1], HEX)  + String(rfid.uid.uidByte[2], HEX) + String(rfid.uid.uidByte[3], HEX);





  ////////declaration du tableau : 0 = libre sinon occupé //////////


  int voiture_presente = 0; //remise à 0

  Serial.print("code carte :");
  Serial.println(myKey);
  if (myKey == "b0c19a1a" || myKey == "3c8a3f1f" || myKey == "1288d0e4" || myKey == "823738e5" || myKey == "ec663flf")  {

    tone(49, NOTE_C5 , dureenotes);
    delay(120);
    tone(49, NOTE_E5 , dureenotes);
    delay(120);
    tone(49, NOTE_G5 , dureenotes);
    delay(120);
    tone(49, NOTE_C6 , dureenotes);



    for (int i = 0; i <= 4; i++) {

      if (box[i] == myKey)
      {
        /////concatenation/////
        String stringOne = " dans le box : ";
        String stringThree = stringOne + i;

        voiture_presente = 1;//voiture deja presente

        Serial.println ("  ");
        Serial.print ("votre vélo est presente dans le box ");
        Serial.println ((i));

        lcd.print(" votre velo est");
        lcd.setCursor(0, 1);
        lcd.print(stringThree);
        digitalWrite(ledverte, HIGH);
        delay(4000);
        digitalWrite(ledverte, LOW);


        if  (myKey == "b0c19a1a" || myKey == "3c8a3f1f") { // si pas forfait alors demande si ils veulent rester
          Serial.print("client n'ayant pas de forfait");

          ecranquestion();


          while (choixinterupteur == 0) { // boucle qui attend choix bouton poussoir

            //******** choix 1 : liverer box  ************

            TSPoint p = ts.getPoint();  //position doigts

            if (p.z > MINPRESSURE) {

              Serial.print("X = "); Serial.print(p.x);
              Serial.print("\tY = "); Serial.print(p.y);
              Serial.print("\n"); //retour ligne


              //Bouton OUI
              if (p.x > 223 && p.x < 348 && p.y > 537 && p.y < 800 && boutton == 0)
              {
                pinMode(XM, OUTPUT);
                pinMode(YP, OUTPUT);
                boutton = 1; //desactive  bouton

                tft.fillScreen(BLACK);
                tft.drawRect(0, 0, 319, 240, RED);
                tft.setCursor(50, 50);
                tft.setTextColor(WHITE);
                tft.setTextSize(3);
                tft.print("OUI");
                tft.setCursor(50, 100);
                tft.setTextSize(2);
                tft.print("Patientez.... ");
                tft.setCursor(50, 130);
                tft.print("l'ascensuer monte");

                lcd.clear();
                lcd.setCursor(0, 0);
                lcd.print("patientez...");
                digitalWrite(ledrouge, HIGH);
                Serial.println("patientez l'ascensuer monte...");

                int rotation = (i + 2) * 1000;
                myStepper.setSpeed(20);
                myStepper.step(-rotation);



                digitalWrite(ledrouge, LOW);
                choixinterupteur = 1;


                ///****************remonter ? ***********////
                lcd.clear();
                lcd.setCursor(0, 0);
                lcd.print("A : remonter");

                while ( choixinterupteur2 == 0 ) { // boucle qui attend choix bouton poussoir
                  if (digitalRead (interrupteurliberer) == LOW)
                  {

                    int rotation = (i + 2) * 1000;
                    myStepper.setSpeed(20);
                    myStepper.step(rotation);
                    break;
                  }
                }
                ecranacceuil();
                break;

              }


              //Bouton NON
              if (p.x > 253 && p.x < 322 && p.y > 169 && p.y < 475 && boutton == 0)
              {
                box[i] = "0"; //remise box à 0

                if (myKey == "b0c19a1a" ) {
                  differencecarteb0c19a1a = differencecarteb0c19a1a + ((millis() / 1000) - startMilliscarteb0c19a1a );
                }
                if (myKey == "3c8a3f1f" ) {
                  differencecarte3c8a3f1f = differencecarte3c8a3f1f + ((millis() / 1000) - startMilliscarte3c8a3f1f );
                }


                pinMode(XM, OUTPUT);
                pinMode(YP, OUTPUT);
                boutton = 1; //desactive  bouton

                tft.fillScreen(BLACK);
                tft.drawRect(0, 0, 319, 240, WHITE);
                tft.setCursor(50, 50);
                tft.setTextColor(WHITE);
                tft.setTextSize(3);
                tft.print("NON");
                tft.setCursor(50, 100);
                tft.setTextSize(2);
                tft.print("Patientez.... ");
                tft.setCursor(50, 130);
                tft.print("l'ascensuer monte");

                lcd.clear();
                lcd.setCursor(0, 0);
                lcd.print("patientez...");
                digitalWrite(ledrouge, HIGH);
                Serial.print(" ...");

                int rotation = (i + 2) * 1000;
                myStepper.setSpeed(20);
                myStepper.step(-rotation);

                digitalWrite(ledrouge, LOW);
                choixinterupteur = 1;


                ///****************remonter ? ***********////

                lcd.clear();
                lcd.setCursor(0, 0);
                lcd.print("A : remonter");

                while ( choixinterupteur2 == 0 ) { // boucle qui attend choix bouton poussoir
                  if (digitalRead (interrupteurliberer) == LOW)
                  {
                    int rotation = (i + 2) * 1000;
                    myStepper.setSpeed(20);
                    myStepper.step(rotation);
                    break;
                  }
                }
                ecranacceuil();
                break;

              }


              //Bouton AIDE
              if (p.x > 400 && p.x < 560 && p.y > 456 && p.y < 556 && boutton == 0)
              {
                pinMode(XM, OUTPUT);
                pinMode(YP, OUTPUT);
                boutton = 1; //desactive  bouton

                tft.fillScreen(BLACK);
                tft.drawRect(0, 0, 319, 240, RED);
                tft.setCursor(10, 80);
                tft.setTextColor(WHITE);
                tft.setTextSize(2);
                tft.print("1)Vous pouvez le garder");
                tft.setCursor(10, 100);
                tft.print("* Le forfait continuera ");
                tft.setCursor(10, 150);
                tft.print("2) Vous pouvez le liberer");
                tft.setCursor(10, 170);
                tft.print("* il ne sera plus a vous");

                //fleche retour

                tft.fillRect(20, 20, 60, 32, BLUE);
                tft.drawRect(20, 20, 60, 32, WHITE);
                tft.setCursor(20, 25);//y et x
                tft.setTextSize(3);
                tft.print("<--");
                Serial.print(boutton);
              }

              if (p.x > 700 && p.x < 840 && p.y > 700 && p.y < 850 && boutton == 1)
              {
                pinMode(XM, OUTPUT);
                pinMode(YP, OUTPUT);
                ecranquestion();
                boutton = 0; //bouton acceuil remarche
                
              }
            }
          }
        }

c'est bon j'ai trouvé !
Sinon en effet, c'est pour le lycée