MP3 Player Sound

Bin Anfänger und hab folgendes Problem.

Es soll beim schliessen eines Schalters, nur einmal ein Sound abgespielt werden.
Aber solange der Kontakt geschlossen ist soll eine LED leuchten. Bei meinem Script wiederholt sich der Sound dauernd.

void loop()
{ 
 
 for (int i=0; i <= 1; i++)
{

if (digitalRead(taster7) == HIGH) 
{
  myDFPlayer.play(1);  
 delay (3000);
  myDFPlayer.stop ( );  
  
 }
 
 digitalWrite (13, HIGH);
 
}

if (digitalRead(taster7) == LOW)
{
  digitalWrite (13, LOW);
 
  }

Setz Bitte kompletten "Skript" in code tags.
im Editor ist das
</>

type or paste code here

Hallo,
dann musst Du die Flanke von dem Taster erkennen. Taster ist gedrückt und war beim letzten mal noch nicht gedrückt.
Heinz

void loop()
{
  if (digitalRead(taster7) == HIGH)
  {
    digitalWrite (13, HIGH);
    playerState = HIGH;
  }
  else
  {
    digitalWrite (13, LOW);
  }
  
  if (playerState)
  {
    myDFPlayer.play(1);
    // Wenn der Titel abgespielt ist:
    // playerState=false;
  }
}

Dank dir.
Hat aber leider den selben Effekt. Solange der Schalter geschlossen ist, läuft der Sound.
Soll aber nur einmal abgespielt werden.

Dann darf playerState nicht mehr false und nur angestossen werden:

void loop()
{
  if (digitalRead(taster7) == HIGH)
  {
    digitalWrite (13, HIGH);
    if (playerState == false) // nur wenn der noch nicht gestartet
    {
      myDFPlayer.play(1);
      playerState = true; // merkt sich, das schon mal gestartet
    }
  }
  else
  {
    digitalWrite (13, LOW);
  }
}

Hallo,
ist auch nicht so einfach den Status " wenn abgespielt ist" zu bekommen geht nur über einen Eingang.

Na dann Versuch mal mit Flankenerkennung die Variante.

// im Allgemeinteil 
bool btnstat; 

void loop() {


  if (digitalRead(taster7) == HIGH && btnstate == LOW) {
    btnstate = HIGH;
    digitalWrite (13, HIGH);
    myDFPlayer.play(1);
    delay (3000);
    myDFPlayer.stop ( );
  }

  if (digitalRead(taster7) == LOW) {
    digitalWrite (13, LOW);
    btnstate = LOW;
  }

}

Hallo
der geht dann aber wiklich nur einmal :wink: und dann nie mehr

Gruß Heinz

Super Danke. So hab ich mir das vorgestellt. TOP!