Tauschen der Lautstärke Funktion


#1

Hallo zusammen,

meine Kinder lieben den TonUino, leider haben sie Probleme die Lautstärke zu verändern. Ich würde gerne die Funktion der Lauter/ Leiser Knöpfe tauschen. Sprich kurzes drücken lauter / leiser und langes drücken nächster / vorheriger Song. Ich habe bereits versucht es im Code zu drehen, jedoch bin ich eher ein Einsteiger Skript Kiddi und habe kene Ahnung von proggen. Beim kompelieren meldet er dann immer das “else” eine “{” erwartet. Könnte mir da jemand helfen?


#2

Hi,
poste doch die entsprechenden Zeilen (am besten als Vorformatierter Text formatiert). Vielleicht kannst du dich auch mit dem Compiler einigen und ihm die geschweifte Klammer geben, wenn er drauf besteht…?

Grüße Philip


#3

(((-:

Hihi… Compiler: “Ich will aber eine Klammer” - TheSaint: “Nix da, die behalte ich!”


#4

org.

if (upButton.pressedFor(LONG_PRESS)) {
  Serial.println(F("Volume Up"));
  mp3.increaseVolume();
  ignoreUpButton = true;
} else if (upButton.wasReleased()) {
  if (!ignoreUpButton)
    nextTrack(random(65536));
  else
    ignoreUpButton = false;
}

meine Idee, welche aber nicht geht

if (upButton.pressedFor(LONG_PRESS)) {
  nextTrack(random(65536));
  ignoreUpButton = true;
} else if (upButton.wasReleased()) {
  if (!ignoreUpButton)
    Serial.println(F("Volume Up"));
    mp3.increaseVolume();
  else
    ignoreUpButton = false;
}

#5

:joy:
war auch mein erster Gedanke


#6

ah. hinter dem if (!ignoreUpButton) hast du zwei Zeilen, wo vorher nur eine war. Man kann auf die geschweiften Klammern verzichten, wenn danach nur eine Zeile (durch Semilolon abgeschlossen) kommt. Hier musst du Klammern einsetzen. s.https://www.arduino.cc/reference/en/language/structure/control-structure/if/

The brackets may be omitted after an if statement. If this is done, the next line (defined by the semicolon) becomes the only conditional statement.


#7

Hi, Ich habe das so abgeändert… Achtung myDFPlayer. == mp3. UND es wurde eine max_Volume abfrage eingefügt für den Betrieb mit Kopfhörern etc.

 if (pauseButton.wasReleased()) {
      if (ignorePauseButton == false){
        if (isPlaying()){
          myDFPlayer.pause();}
        else{
          myDFPlayer.start();}
      ignorePauseButton = false;
    } else if (pauseButton.pressedFor(LONG_PRESS) && ignorePauseButton == false) {
      if (isPlaying()){
        myDFPlayer.advertise(track);}
      else {
        knownCard = false;
        myDFPlayer.playMp3Folder(800);
        Serial.println(F("Karte resetten..."));
        resetCard();
        mfrc522.PICC_HaltA();
        mfrc522.PCD_StopCrypto1();
      }
      ignorePauseButton = true;
    }
 }
    if (upButton.pressedFor(LONG_PRESS)) {
      //Serial.println(F("Volume Up"));
      //myDFPlayer.volumeUp();
      nextTrack();
      ignoreUpButton = true;
    } else if (upButton.wasReleased()) {
      if (!ignoreUpButton){
        //nextTrack();
        if(myDFPlayer.readVolume() <= max_Volume){
          myDFPlayer.volumeUp();
          }
      }else{
        ignoreUpButton = false;}
    }

    if (downButton.pressedFor(LONG_PRESS)) {
      //Serial.println(F("Volume Down"));
      //myDFPlayer.volumeDown();
      previousTrack();
      ignoreDownButton = true;
    } else if (downButton.wasReleased()) {
      if (!ignoreDownButton)
        //previousTrack();
        myDFPlayer.volumeDown();
      else
        ignoreDownButton = false;
    }

#8

@ anku & Christopher
Danke für die Hilfe. Läuft nun.

@Thorsten
Wäre das umschalten der Tastenfunktion eine mögliche Option für das Admin Menü?

Für alle “meinen” Code:

if (upButton.pressedFor(LONG_PRESS)) {
  nextTrack(random(65536));
  ignoreUpButton = true;
} else if (upButton.wasReleased()) {
  if (!ignoreUpButton) {
    Serial.println(F("Volume Up"));
    mp3.increaseVolume();
  }
  else
    ignoreUpButton = false;
}

if (downButton.pressedFor(LONG_PRESS)) {
  previousTrack();
  ignoreDownButton = true;
} else if (downButton.wasReleased()) {
  if (!ignoreDownButton) {
    Serial.println(F("Volume Down"));
    mp3.decreaseVolume();
  }
  else
    ignoreDownButton = false;
}

#9

Also meine Stimme hätte der Vorschlag. War mit das erste was ich in meiner Firmware gedreht habe. Das man das einstellbar macht wäre praktisch IMHO.


#10

Admin Menu oder oben im Quelltext per Variable setzen, fänd ich zumutbar. Ich habe es auch getauscht.