Quellcode Fragen


#1

Hallo zusammen,
ich habe Fragen zum Quellcode.

  1. Kann die maximale Lautstärke begrenzt werden
  2. Die Dauer des Drucks der zweiten Buttonbelegung möchte ich gerne verkürzen.
  3. Die Rampe oder die Geschwindigkeit der Lautstärkeregulierung hätte ich gerne sanfter bzw langsamer.

Gibt es die Möglichkeit vor dem Kompilieren die Werte anzupassen? Habe versucht aus dem Quellcode schlau zu werden konnte aber keine eindeutigen Rückschlüsse der Zeilen auf das Verhalten der Programmierung ziehen. Bin leider kein Programmierer.


#2

Zu 1) In der aktuellen offiziellen Firmware nicht. Andere haben das nachgerüstet.

Zu 2) Siehe Zeile 162 [1]. Momentan sind das 1000 Millisekunden.

Zu 3) Nein. Das liegt daran, daß Lauter/Leiser auf gedrückt halten ist. Ne Bremse ist da momentan in der offiziellen Firmware nicht drin.

[1] https://github.com/xfjx/TonUINO/blob/eb07cf8f5e551c3834eab2a84ad96d0cdc2d9f56/Tonuino.ino#L162


#3

Die Begrenzung der Lautstärke kommt in der nächsten Version der Firmware - aber nicht fix im Code sondern über ein neues “Setup”-Menü.


#4

Hi Zusammen.
Ich würde gerne die übersicht des Codes verbessen und ein paar Funktionen gruppieren und in eingene C/H-Files auslagern. Vorausgesetzt ihr findet dies auch Sinnvoll.
Hab leider noch nicht so viel Erfahrung mit Github und femden Repos. Auch kempfe ich noch an der Funktionsübergabe des mp3-objects (static DFMiniMp3<SoftwareSerial, Mp3Notify> mp3(mySoftwareSerial);). Bin beruflich nur auf Standart C unterwegs. Templates sind für mich Neuland


#5

Oh ich bin schon gespannt Thorsten :grinning:


#6

Wer nicht auf Thorstens nächste Version warten kann, hier meine Lösung für Volume Min/Maxqt1%20-%20Copyqt_3 qt2%20-%20Copy


Lautstärke über Software begrenzen
#7

@Dennis
Sobald ich deine Zeilen einfüge, stoppt der Kompiliervorgang bei der Zeile resetCard();

irgendeine Idee?


#8

Du hast wahrscheinlich irgendwo eine { oder } zu viel oder zu wenig.


#9

Mhh, seltsam. Hast Du wirklich 1:1 übertragen? Mit allen Semikolons?


#10

Ich hatte das Problem auch die letzten Tage, da half nur die Funktion oben im Code zu initialisieren bevor das setup kommt. Also als: void resetCard(void) ;


#11

Bitte nicht falsch verstehen, aber als Programmierer tut die Aussage weh :wink:

Was du da machst ist es die Funktion zu deklarieren. (Das macht man damit der Compiler weiß, dass es eine Funktion mit diesem Namen gibt. Den selben Effekt hat es, wenn die komplette Funktion im Quellcode über allen stellen steht, an denen sie aufgerufen wird.)


#12

Sorry für die falsche Wortwahl😁 ja stimmt das hieß Deklarieren… Und ja die ganze Funktion nach oben ziehen geht natürlich auch. Ich überlege aber schon eine Weile alle Funktionen in eine seperate Datei auszulagern.


#13

@Dennis

Ja, hatte ich. Merkwürdig.

Magst du vielleicht einfach deinen Code per copy&paste posten?
In "vorformatierter Text" Tags?

Dank dir

Carsten


#14
// DFPlayer Mini
SoftwareSerial mySoftwareSerial(2, 3); // RX, TX
uint16_t numTracksInFolder;
uint16_t currentTrack;
uint8_t volume;
…
// DFPlayer Mini initialisieren
mp3.begin();
mp3.setVolume(15);
volume = 15;
…
if (upButton.pressedFor(LONG_PRESS)) {
  if (volume < 23) {
    Serial.println(F("Volume Up"));
    mp3.increaseVolume();
      volume = mp3.getVolume();
    Serial.println(volume);
    ignoreUpButton = true;
  } else {
    ignoreUpButton = true;
  }
} else if (upButton.wasReleased()) {
  if (!ignoreUpButton)
    nextTrack(random(65536));
  else
    ignoreUpButton = false;
}
if (downButton.pressedFor(LONG_PRESS)) {
  if (volume > 3) {
    Serial.println(F("Volume Down"));
    mp3.decreaseVolume();
      volume = mp3.getVolume();
    Serial.println(volume);
    ignoreDownButton = true;
  } else {
    ignoreDownButton = true;
  }
} else if (downButton.wasReleased()) {
  if (!ignoreDownButton)
    previousTrack();
  else
    ignoreDownButton = false;
}

Hoffe das hilft Dir. Ansonsten hat Thorsten diese Funktion bestimmt in seiner nächsten Version drin.


#15
if (upButton.pressedFor(LONG_PRESS)) {
  if (volume < 23) {
    Serial.println(F("Volume Up"));
    mp3.increaseVolume();
      volume = mp3.getVolume();
    Serial.println(volume);
    ignoreUpButton = true;
  }

Hier fehlt am Ende eine geschweifte klammer wie ich das sehe.


#16

Im letzten Post von @Dennis fehlt keine geschweifte Klammer. Da ist alles in Ordnung.


#17

Aber die if upButton Bedingung wird vor dem Else nicht geschlossen und das Else bezieht sich dann auf die untere if volume Abfrage…


#18

Und ist ja auch richtig so. Genau wie in dem zweiten IF Block auch. Das sieht man auch an der Einrückung…


#19

Stimmt😔 nicht richtig gelesen… Sorry für die Verwirrung.


#20

Ist kein Problem, wurde ja geklärt! :wink: