Musik / Hörbuch schaltet nicht ab, wenn die Karte abgenommen wird

Hallo alle zusammen.

Ein super cooles Projekt und ich bin fleißig dran.

Ich habe jetzt alles so gemacht und der Testaufbau steht.

Leider schaltet sich die Musik nicht ab, wenn man die Karte runter nimmt.

Ist das so gewollt?

Über eine Antwort, würde ich mich sehr freuen.

Vielen Dank

Ja, das ist korrekt.

Vielen Dank für die schnelle Antwort.

Ok. Ich fände es zwar etwas Schöner, wenn das anders wäre, aber dann läuft mein Aufbau ja ohne Probleme.

Hallo,

ich möchte das Thema nochmal kurz wieder aufwärmen.

Gibt es den die Möglichkeit die Funktion einzubauen, das bei entnahme des Tags der Track gestoppt wird??

mfg Black_Teletabbi

Ich will jetzt nicht sagen das es unmöglich ist, es ist aber momentan nicht vorgesehen. Da wir nicht mit Magneten usw arbeiten (wie gewisse andere Boxen) finde ich es auch unglücklich wenn jedes Mal wenn die Karte etwas verrutscht und als entfernt erkannt wird die Musik stoppt…

Wie schon in einem anderen Thread besprochen,
wurde es hier so softwareseitig umgesetzt:

Das ganze lässt sich nur mit Aufwand in der aktuellen Version umsetzen und da die aktuelle Position auch nicht gespeichert werden kann währe es sogar unschön im Track aufzuhören.

In des ESP32 Version mit VS1053 als Player ist es umgesetzt.

Das es im pnp cube umgesetzt is weiß ich @Dennis. Das hier ist aber nich das pnp cube Forum. :wink:

Das ganze lässt sich nur mit Aufwand in der aktuellen Version umsetzen und da die aktuelle Position auch nicht gespeichert werden kann währe es sogar unschön im Track aufzuhören.

Dem ist nichts hinzuzufügen. Danke. :blush:

Danke für die schnelle Info…

Nur so als Gedanke was grob gemacht werden müsste…(natürlich alles ungetestet und auch nicht vollständig)

die do-while in der “void loop() {…}” muss geändert werden von:

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

zum Bsp. zu:

do {
   .....
  // Ende der Buttons
  } while (!cardRemoved);

zusätzlich braucht man folgende Funktionen

bool cardRemoved() {
 //über millis() nur alle zwei Sekunden oder so ausführen.
     if(millis() - previousMillis > 2000)
     {
          previousMillis =millis();
          mfrc522.PICC_WakeupA();
          if(oldUID !=getID()) return true;
          else return false;
         
     }
}

unsigned long getID(){
  if ( ! mfrc522.PICC_ReadCardSerial()) { //Since a PICC placed get Serial and continue
    return -1;
  }
  unsigned long hex_num;
  hex_num =  mfrc522.uid.uidByte[0] << 24;
  hex_num += mfrc522.uid.uidByte[1] << 16;
  hex_num += mfrc522.uid.uidByte[2] <<  8;
  hex_num += mfrc522.uid.uidByte[3];
  mfrc522.PICC_HaltA(); // Stop reading
  return hex_num;
}

dann muss natürlich auch noch alles hinter der do{…}while(…) angepasst werden da dieser Teil sonst ständig durchlaufen wird wenn keine Karte aufgelegt ist. Dann müsste die UID einer eingelesenen Karte gespeichert werden “oldUID”, im Moment wird ja nur der Magic Cookie ausgewertet und bestimmt noch einiges was Ich vergessen habe.

Außerdem muss die Karte noch schlafen geschickt und wieder aufgeweckt werden.
Und ein “Problem” entsteht wenn die Karten eine längere UID haben, wie zum Beispiel die NTAGs.

Ich habe in einem anderen Projekt mal sowas gesehen:

  uint8_t control = 0x00;

  do {
    control = 0;
    for (int i = 0; i < 3; i++) {
      if (!mfrc522.PICC_IsNewCardPresent()) {
        if (mfrc522.PICC_ReadCardSerial()) {
          control |= 0x16;
        }
         if (mfrc522.PICC_ReadCardSerial()) {
          control |= 0x16;
        }
       control += 0x1;
      }
     control += 0x4;
    }
    delay(0);
  } while (control == 13 || control == 14);

  reconnect();

  Serial.println("Removed");
  client.publish("SmartHome/TestRaum/RFID", "REMOVED");
  delay(500);

  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
}

Kann man das nicht eventl. nutzen?

Hatte Ich berücksichtigt :wink:

mfrc522.PICC_WakeupA();
mfrc522.PICC_HaltA();

Das kannst du dir auch in meinem Projekt ( EnRav, Link im Profil) ansehen.

Ändert aber nicht an dem Problem des speicherns der Position.