aktuell habe ich an meinem 3-Button TonUINO ein I2C-Display, das mir Lautstärke und Track-Nummern anzeigt.
Nun würde ich gerne auch das Menü grafisch darstellen. Also immer wenn das entsprechende Soundfile abgespielt wird eine Einblendung, die die weiteren Optionen zeigt.
Mein plan war einfach eine Displayausgabe nach jedem
mp3.playMp3FolderTrack(XXX);
einzubauen. Manche Tracknummern aus dem Mp3-Ordner finde ich allerdings gar nicht im Code.
Wo kann ich das dann einbauen?
Leider ist mir in der Code mittlerweile zu lang und zu unübersichtlich, dass ich wirklich noch durchsteige, wo sich welche Funktion versteckt. Zumal ich zugeben muss, dass ich zuvor manche Befehle noch nichtmal gelesen hatte und immer sehr viel basalere Programme geschrieben habe
Manche der Sounddateien sind im Code etwas versteckt. Hier ein Auszug des Codes in dem Sounddateien des Adminmenüs aufgerufen werden
// *********************Admin-Menü-Funktionen auswählen*****************
int subMenu = voiceMenu(12, 900, 900, false, false, 0, true); // Willkommen im Adminmenü,Wähle eine Funktion ...(mp3/ 900 - 912)
if (subMenu == 0)
return;
// ************** Karte neu Konfiguriern ***********
if (subMenu == 1) // Karte neu Konfigurieren
Diese Art des Aufrufs von Sounddateien findest du auch noch an anderen Stellen im Code.
Die Schlüsselposition für dias oben gezeigte Beispiel liegt im folgenden Codeteil:
int subMenu = voiceMenu(12, 900, 900, false, false, 0, true);
Der Rest dahinter beginnend mit den // Kommentarzeichen ist von mir ergänzt als Orientierungshilfe für mich.
Die Zeile sagt im Prinzip folgendes aus:
12 für 12 Optionen
900 für die erste Sounddatei.
Mit jedem weiterschalten der Optionen wird die darauffolgende Sounddatei gespielt, also 901, 902, ……912.
Danke, dann weiß ich zumindest wo es im Code steht. Macht die Sache dann aber nicht einfacher. Dachte ich könnte da jetzt überall den Code mit den jeweiligen Optionen rein copy/pasten.
Aber wie Thomas-Lehnert geschrieben hat, verstecken die sich ja auch in anderen Befehlen, weswegen das leider nicht alle Menüpunkte erfassen würde… oder übersehe ich da was?
Liebe Grüße, Tuok
Ich habe es versucht zu implementieren, leider scheitert ein Grafisches Menü am Programmspeicherplatz. Hier komme ich auf 112%…
Edit: Auch wenn ich alles auskomentiere und nur versuche bei einer voicemenue Option etwas anzeigen zu lassen, passiert am Display nix.
Habe es versucht wie folgt zu implementieren:
if (subMenu == 1) {
/// hier Beginnt Display
oled.setFont(Callibri11_bold);
oled.clear();
oled.println(" Reset Karte");
oled.println("Maximale Lautstärke");
oled.println("Minimale Lautstärke");
oled.println("Start-Lautstärke");
oled.println("Equalizer");
// Ende Display
resetCard();
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
}
else if (subMenu == 2) {
/// hier Beginnt Display
oled.setFont(Callibri11_bold);
oled.clear();
oled.println("Reset Karte");
oled.println(" Maximale Lautstärke");
oled.println("Minimale Lautstärke");
oled.println("Start-Lautstärke");
oled.println("Equalizer");
// Ende Display
Ich habe um das Programm zu verkleinern, alle Debug Ausgaben in die Konsole mit einem #ifdef DEBUG versehen, so kann man fast 30% einsparen. Zusätzlich „belaste“ ich den Arduino im laufenden Betrieb nicht mit unnötigen Aufgaben. Falls ich sie dennoch brauche sind sie schnell wieder über das #define DEBUG eingefügt.