Hallo an Alle
Software: Tonuino DEV 2.1
Ich möchte gerne ein Feedback in das Adminmenü integrieren. Das heist wenn die Einstellungen im Adminmenü abgeschlossen sind möchte ich beim automatischen Verlassen des Adminmenüs ein MP3 File abspielen. Zum Beispiel „Änderungen abgespeichert!“
Bisher wird das Adminmenü ohne jede Rückmeldung verlassen. Ich weis nur nicht an welcher Stelle ich den mp3.play Befehl mit der entsprechenden Datei einfügen muss. Das heist an welcher Stelle im Code wird das Admin Menü verlassen.
Hat wer nen Tip für mich?
void adminMenu(bool fromCard = false) {
disablestandbyTimer();
mp3.pause();
#ifdef DEBUG
Serial.println(F("=== adminMenu()"));
#endif
knownCard = false;
if (fromCard == false) {
// Admin menu has been locked - it still can be trigged via admin card
if (mySettings.adminMenuLocked == 1) {
return;
}
// Pin check
else if (mySettings.adminMenuLocked == 2) {
uint8_t pin[4];
mp3.playMp3FolderTrack(991);
if (askCode(pin) == true) {
if (checkTwo(pin, mySettings.adminMenuPin) == false) {
return;
}
} else {
return;
}
}
// Match check
else if (mySettings.adminMenuLocked == 3) {
uint8_t a = random(10, 20);
uint8_t b = random(1, 10);
uint8_t c;
mp3.playMp3FolderTrack(992);
waitForTrackToFinish();
mp3.playMp3FolderTrack(a);
if (random(1, 3) == 2) {
// a + b
c = a + b;
waitForTrackToFinish();
mp3.playMp3FolderTrack(993);
} else {
// a - b
b = random(1, a);
c = a - b;
waitForTrackToFinish();
mp3.playMp3FolderTrack(994);
}
waitForTrackToFinish();
mp3.playMp3FolderTrack(b);
#ifdef DEBUG
Serial.println(c);
#endif
uint8_t temp = voiceMenu(255, 0, 0, false);
if (temp != c) {
return;
}
}
}
int subMenu = voiceMenu(12, 900, 900, false, false, 0, true);
if (subMenu == 0)
return;
if (subMenu == 1) {
resetCard();
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
}
else if (subMenu == 2) {
// Maximum Volume
mySettings.maxVolume = voiceMenu(30 - mySettings.minVolume, 930, mySettings.minVolume, false, false, mySettings.maxVolume - mySettings.minVolume) + mySettings.minVolume;
}
else if (subMenu == 3) {
// Minimum Volume
mySettings.minVolume = voiceMenu(mySettings.maxVolume - 1, 931, 0, false, false, mySettings.minVolume);
}
else if (subMenu == 4) {
// Initial Volume
mySettings.initVolume = voiceMenu(mySettings.maxVolume - mySettings.minVolume + 1, 932, mySettings.minVolume - 1, false, false, mySettings.initVolume - mySettings.minVolume + 1) + mySettings.minVolume - 1;
}
else if (subMenu == 5) {
// EQ
mySettings.eq = voiceMenu(6, 920, 920, false, false, mySettings.eq);
mp3.setEq(mySettings.eq - 1);
}
else if (subMenu == 6) {
// create modifier card
nfcTagObject tempCard;
tempCard.cookie = cardCookie;
tempCard.version = 1;
tempCard.nfcFolderSettings.folder = 0;
tempCard.nfcFolderSettings.special = 0;
tempCard.nfcFolderSettings.special2 = 0;
tempCard.nfcFolderSettings.mode = voiceMenu(6, 970, 970, false, false, 0, true);
if (tempCard.nfcFolderSettings.mode != 0) {
if (tempCard.nfcFolderSettings.mode == 1) {
switch (voiceMenu(4, 960, 960)) {
case 1: tempCard.nfcFolderSettings.special = 5; break;
case 2: tempCard.nfcFolderSettings.special = 15; break;
case 3: tempCard.nfcFolderSettings.special = 30; break;
case 4: tempCard.nfcFolderSettings.special = 60; break;
}
}
mp3.playMp3FolderTrack(800);
do {
readButtons();
if (upButton.wasReleased() || downButton.wasReleased()) {
#ifdef DEBUG
Serial.println(F("Abgebrochen!"));
#endif
mp3.playMp3FolderTrack(802);
return;
}
} while (!mfrc522.PICC_IsNewCardPresent());
// RFID Karte wurde aufgelegt
if (mfrc522.PICC_ReadCardSerial()) {
#ifdef DEBUG
Serial.println(F("schreibe Karte..."));
#endif
writeCard(tempCard);
delay(100);
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
waitForTrackToFinish();
}
}
}
else if (subMenu == 7) {
uint8_t shortcut = voiceMenu(4, 940, 940);
setupFolder(&mySettings.shortCuts[shortcut - 1]);
mp3.playMp3FolderTrack(400);
}
else if (subMenu == 8) {
switch (voiceMenu(5, 960, 960)) {
case 1: mySettings.standbyTimer = 5; break;
case 2: mySettings.standbyTimer = 15; break;
case 3: mySettings.standbyTimer = 30; break;
case 4: mySettings.standbyTimer = 60; break;
case 5: mySettings.standbyTimer = 0; break;
}
}
else if (subMenu == 9) {
// Create Cards for Folder
// Ordner abfragen
nfcTagObject tempCard;
tempCard.cookie = cardCookie;
tempCard.version = 1;
tempCard.nfcFolderSettings.mode = 4;
tempCard.nfcFolderSettings.folder = voiceMenu(99, 301, 0, true);
uint8_t special = voiceMenu(mp3.getFolderTrackCount(tempCard.nfcFolderSettings.folder), 321, 0,
true, tempCard.nfcFolderSettings.folder);
uint8_t special2 = voiceMenu(mp3.getFolderTrackCount(tempCard.nfcFolderSettings.folder), 322, 0,
true, tempCard.nfcFolderSettings.folder, special);
mp3.playMp3FolderTrack(936);
waitForTrackToFinish();
for (uint8_t x = special; x <= special2; x++) {
mp3.playMp3FolderTrack(x);
tempCard.nfcFolderSettings.special = x;
#ifdef DEBUG
Serial.print(x);
Serial.println(F(" Karte auflegen"));
#endif
do {
readButtons();
if (upButton.wasReleased() || downButton.wasReleased()) {
#ifdef DEBUG
Serial.println(F("Abgebrochen!"));
#endif
mp3.playMp3FolderTrack(802);
return;
}
} while (!mfrc522.PICC_IsNewCardPresent());
// RFID Karte wurde aufgelegt
if (mfrc522.PICC_ReadCardSerial()) {
#ifdef DEBUG
Serial.println(F("schreibe Karte..."));
#endif
writeCard(tempCard);
delay(100);
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
waitForTrackToFinish();
}
}
}
else if (subMenu == 10) {
// Invert Functions for Up/Down Buttons
int temp = voiceMenu(2, 933, 933, false);
if (temp == 2) {
mySettings.invertVolumeButtons = true;
}
else {
mySettings.invertVolumeButtons = false;
}
}
else if (subMenu == 11) {
#ifdef DEBUG
Serial.println(F("Reset -> EEPROM wird gelöscht"));
#endif
for (int i = 0; i < EEPROM.length(); i++) {
EEPROM.update(i, 0);
}
resetSettings();
mp3.playMp3FolderTrack(999);
}
// lock admin menu
else if (subMenu == 12) {
int temp = voiceMenu(4, 980, 980, false);
if (temp == 1) {
mySettings.adminMenuLocked = 0;
}
else if (temp == 2) {
mySettings.adminMenuLocked = 1;
}
else if (temp == 3) {
int8_t pin[4];
mp3.playMp3FolderTrack(991);
if (askCode(pin)) {
memcpy(mySettings.adminMenuPin, pin, 4);
mySettings.adminMenuLocked = 2;
}
}
else if (temp == 4) {
mySettings.adminMenuLocked = 3;
}
}
writeSettingsToFlash();
setstandbyTimer();
//Hier Track einfügen
mp3.playMp3FolderTrack(000);
waitForTrackToFinish();
}
Das ist die Admin Menü Funktion, in der das Admin Menü abgebildet ist. Dort ganz am Ende kannst du deine Bestätigungsnachricht einfügen. Du musst halt noch die Track Nr ändern.
1 „Gefällt mir“
Super, Danke für deine Hilfe. Ich hab einfach nicht die Position gefunden an der das Admin menü beendet wird.
Danke nochmals. Werde es so machen.
So ich habe es verwirklicht. Das Soundfile im mp3 ordner 998.mp3 " OK, Tonuino konfiguriert" funktioniert wie gewünscht.
1 „Gefällt mir“