Pause wenn Karte entfernt mit ClickEncoder

Hallo,

ich habe meinen Tonuino nun endlich auch fertig gebaut, aktuell habe ich die DEV mit „Clickencoder“ drauf (https://github.com/Ullergr/TonUINO_KY040/). Es zeigt sich jedoch, dass mein Sohn gerne die Funktion „Pause wenn Karte entfernt“ hätte. Ich selbst scheitere leider dabei den Clickencoder in die Version von mcgreg einzubauen.
Hat jemand zufällig schon beide Versionen zusammen gemerged?

Hallo, um mal konkreter zu werden, ich habe ein Problem damit, die Lautstärkeregelung in die loop einzubauen. In dem Fork von ullegr (https://github.com/Ullergr/TonUINO_KY040/) wird hier eine do … while Schleife eingebaut:

void loop() {

    checkStandbyAtMillis();
    mp3.loop();

    // Modifier : WIP!
    if (activeModifier != NULL) {
      activeModifier->loop();
    }

    // Buttons werden nun über JS_Button gehandelt, dadurch kann jede Taste
    // doppelt belegt werden
    readButtons();

    // admin menu
    if (( upButton.pressedFor(LONG_PRESS) || downButton.pressedFor(LONG_PRESS)) && upButton.isPressed() && downButton.isPressed()) {
      mp3.pause();
      do {
        readButtons();
      } while (upButton.isPressed() || downButton.isPressed());
      readButtons();
      adminMenu();
      return;
    }

    if (pauseButton.wasReleased()) {
      if (activeModifier != NULL)
        if (activeModifier->handlePause() == true)
          return;
      if (ignorePauseButton == false)
        if (isPlaying()) {
          mp3.pause();
          setstandbyTimer();
        }
        else if (knownCard) {
          mp3.start();
          disablestandbyTimer();
        }
      ignorePauseButton = false;
    } else if (pauseButton.pressedFor(LONG_PRESS) &&
               ignorePauseButton == false) {
      if (activeModifier != NULL)
        if (activeModifier->handlePause() == true)
          return;
      if (isPlaying()) {
        uint8_t advertTrack;
        if (myFolder->mode == 3 || myFolder->mode == 9) {
          advertTrack = (queue[currentTrack - 1]);
        }
        else {
          advertTrack = currentTrack;
        }
        // Spezialmodus Von-Bis für Album und Party gibt die Dateinummer relativ zur Startposition wieder
        if (myFolder->mode == 8 || myFolder->mode == 9) {
          advertTrack = advertTrack - myFolder->special + 1;
        }
        mp3.playAdvertisement(advertTrack);
      }
      else {
        playShortCut(0);
      }
      ignorePauseButton = true;
    }

    if (upButton.pressedFor(LONG_PRESS)) {
      if (isPlaying()) {
        if (!mySettings.invertVolumeButtons) {
          volumeUpButton();
        }
        else {
          nextButton();
        }
      }
      else {
        playShortCut(1);
      }
      ignoreUpButton = true;
    } else if (upButton.wasReleased()) {
      if (!ignoreUpButton)
        if (!mySettings.invertVolumeButtons) {
          nextButton();
        }
        else {
          volumeUpButton();
        }
      ignoreUpButton = false;
    }

    if (downButton.pressedFor(LONG_PRESS)) {
      if (isPlaying()) {
        if (!mySettings.invertVolumeButtons) {
          volumeDownButton();
        }
        else {
          previousButton();
        }
      }
      else {
        playShortCut(2);
      }
      ignoreDownButton = true;
    } else if (downButton.wasReleased()) {
      if (!ignoreDownButton) {
        if (!mySettings.invertVolumeButtons) {
          previousButton();
        }
        else {
          volumeDownButton();
        }
      }
      ignoreDownButton = false;
    }

    // Ende der Buttons

#ifdef POTI
    potiVolume();
#endif     
      handleCardReader();
}

Diese ist in dem Fork von mcgreg (https://github.com/mcgreg1/TonUINO) nicht vorhanden:

do {
  //*********************************************************************************************
  //Lautstärkeregelung
  //*********************************************************************************************
    encPos += encoder.getValue();

    if (encPos != oldEncPos) {
      oldEncPos = encPos;

      if (encPos > mySettings.maxVolume) {
        volume  = mySettings.maxVolume;
        encPos  = mySettings.maxVolume;

      }
      else if (encPos < mySettings.minVolume) {
        volume  = mySettings.minVolume;
        encPos  = mySettings.minVolume;

      }
      else   {
        volume  = encPos;

      }
      mp3.setVolume(volume);
      Serial.println(volume);

    }
    //*********************************************************************************************

    checkStandbyAtMillis();
    mp3.loop();

    // Modifier : WIP!
    if (activeModifier != NULL) {
      activeModifier->loop();
    }

    // Buttons werden nun über JS_Button gehandelt, dadurch kann jede Taste
    // doppelt belegt werden
    readButtons();

    // admin menu
    if ((pauseButton.pressedFor(LONG_PRESS) || upButton.pressedFor(LONG_PRESS) || downButton.pressedFor(LONG_PRESS)) && pauseButton.isPressed() && upButton.isPressed() && downButton.isPressed()) {
      mp3.pause();
      do {
        readButtons();
      } while (pauseButton.isPressed() || upButton.isPressed() || downButton.isPressed());
      readButtons();
      adminMenu();
      return;
    }

    if (pauseButton.wasReleased()) {
      if (activeModifier != NULL)
        if (activeModifier->handlePause() == true)
          return;
      if (ignorePauseButton == false)
        if (isPlaying()) {
          mp3.pause();
          setstandbyTimer();
        }
        else if (knownCard) {
          mp3.start();
          disablestandbyTimer();
        }
      ignorePauseButton = false;
    } else if (pauseButton.pressedFor(LONG_PRESS) &&
               ignorePauseButton == false) {
      if (activeModifier != NULL)
        if (activeModifier->handlePause() == true)
          return;
      if (isPlaying()) {
        uint8_t advertTrack;
        if (myFolder->mode == 3 || myFolder->mode == 9) {
          advertTrack = (queue[currentTrack - 1]);
        }
        else {
          advertTrack = currentTrack;
        }
        // Spezialmodus Von-Bis für Album und Party gibt die Dateinummer relativ zur Startposition wieder
        if (myFolder->mode == 8 || myFolder->mode == 9) {
          advertTrack = advertTrack - myFolder->special + 1;
        }
        mp3.playAdvertisement(advertTrack);
      }
      else {
        playShortCut(0);
      }
      ignorePauseButton = true;
    }

    if (upButton.pressedFor(LONG_PRESS)) {
#ifndef FIVEBUTTONS
      if (isPlaying()) {
        //*********************************************************************************************
        /* if (!mySettings.invertVolumeButtons) { */
        /*   volumeUpButton(); */
        /* } */
        /* else { */
        //*********************************************************************************************
          nextButton();
          //*********************************************************************************************
        /* } */
      //*********************************************************************************************
      }
      else {
        playShortCut(1);
      }
      ignoreUpButton = true;
#endif
    } else if (upButton.wasReleased()) {
      if (!ignoreUpButton)
        //*********************************************************************************************
        /* if (!mySettings.invertVolumeButtons) { */
          nextButton();
        /* } */
        /* else { */
          //*********************************************************************************************
          /* volumeUpButton(); */
          //*********************************************************************************************
        /* } */
      //*********************************************************************************************
      ignoreUpButton = false;
    }

    if (downButton.pressedFor(LONG_PRESS)) {
#ifndef FIVEBUTTONS
      if (isPlaying()) {
        //*********************************************************************************************
        /* if (!mySettings.invertVolumeButtons) { */
        /*   volumeDownButton(); */
        /* } */
        /* else { */
          //*********************************************************************************************
          previousButton();
          //*********************************************************************************************
        /* } */
        //*********************************************************************************************
      }
      else {
        playShortCut(2);
      }
      ignoreDownButton = true;
#endif
    } else if (downButton.wasReleased()) {
      if (!ignoreDownButton) {
        //*********************************************************************************************
        /* if (!mySettings.invertVolumeButtons) { */
          //*********************************************************************************************
          previousButton();
          //*********************************************************************************************
        /* } */
        /* else { */
        /*   volumeDownButton(); */
        /* } */
        //*********************************************************************************************
      }
      ignoreDownButton = false;
    }
#ifdef FIVEBUTTONS
    if (buttonFour.wasReleased()) {
      if (isPlaying()) {
        //*********************************************************************************************
        /* if (!mySettings.invertVolumeButtons) { */
        /*   volumeUpButton(); */
        /* } */
        /* else { */
          //*********************************************************************************************
          nextButton();
          //*********************************************************************************************
        /* } */
        //*********************************************************************************************
      }
      else {
        playShortCut(1);
      }
    }
    if (buttonFive.wasReleased()) {
      if (isPlaying()) {
        //*********************************************************************************************
        /* if (!mySettings.invertVolumeButtons) { */
        /*   volumeDownButton(); */
        /* } */
        /* else { */
          //*********************************************************************************************
          previousButton();
          //*********************************************************************************************
        /* } */
        //*********************************************************************************************
      }
      else {
        playShortCut(2);
      }
    }
#endif

    // Ende der Buttons
} while (!mfrc522.PICC_IsNewCardPresent());

Kann mir jemand helfen, wie ich diese Stellen miteinander vereinen kann? Ich denke der Rest ist klar, ist ja nur die Definition und Initialisierung.

Hallo, ich wollte das Thema nochmal nach oben holen und fragen ob sich das einer der Programmierprofis mir einen Tipp geben kann.
Vielen Dank schon Mal.
Gruß Florian