i want to replay the sound

this code is for a project used the RFID & SD cards to made an simple audio play for one id

i use tags with ID's

it's work good

but for one time not work as a loop!!!!

when i near the rfid card to the reader it's work a one of the play samples

but for one time >>>>>> and i need to replay the arduino

#include <PN532.h>
#include <SPI.h>
#include <SimpleSDAudio.h>
#define PN532_CS 10
PN532 nfc(PN532_CS);
#define NFC_DEMO_DEBUG 1
void setup() {
#ifdef NFC_DEMO_DEBUG
#endif
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
#ifdef NFC_DEMO_DEBUG

#endif
while (1); // halt
}
#ifdef NFC_DEMO_DEBUG

#endif
nfc.SAMConfig();

}
void loop(void)
{

uint32_t id;
id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);

if (id != 0)
{
#ifdef NFC_DEMO_DEBUG
Serial.print("Read card #");
Serial.println(id);
if(id==4251492471)
{
if (SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO))
{
if(SdPlay.setFile("12.afm"))
{
SdPlay.play();
while(!SdPlay.isStopped())
{
SdPlay.worker();

}
}
}
}
}

#endif
}

How to use this forum

Code tags, please.

sorry what you mean by tage ??

Hi,
please use the line if (SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO)) only once at setup.

ok>>>>> but shat about ""if""?????????

What about the code tags? And please use the auto-format tool in the IDE. This sort of stuff is impossible to follow:

}
}
}
}
}

#endif
}

sorry what you mean by tage ??

Do you mean "tags"? Read this: How to use this forum

There is a pretty clear screen-shot showing what I mean.

#include <PN532.h>
#include <SPI.h>
#include <SimpleSDAudio.h>
#define PN532_CS 10
PN532 nfc(PN532_CS);
#define NFC_DEMO_DEBUG 1
void setup() {
#ifdef NFC_DEMO_DEBUG
#endif
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
#ifdef NFC_DEMO_DEBUG

#endif
while (1); // halt
}
#ifdef NFC_DEMO_DEBUG

#endif
nfc.SAMConfig();

}
void loop(void)
{

uint32_t id;
id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);

if (id != 0)
{
#ifdef NFC_DEMO_DEBUG
Serial.print("Read card #");
Serial.println(id);
if(id==4251492471)
{
if (SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO))
{
if(SdPlay.setFile("12.afm"))
{
SdPlay.play();
while(!SdPlay.isStopped())
{
SdPlay.worker();

}
}
}
}
}

#endif
}

thanx ........ this is the code

^^^^

This.

ok now help me plz 8)

Here, let me format it for you:

#include <PN532.h>
#include <SPI.h>
#include <SimpleSDAudio.h>
#define PN532_CS 10
PN532 nfc(PN532_CS);
#define NFC_DEMO_DEBUG 1
void setup() {
#ifdef NFC_DEMO_DEBUG
#endif
  nfc.begin();
  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) {
#ifdef NFC_DEMO_DEBUG

#endif
    while (1); // halt
  }
#ifdef NFC_DEMO_DEBUG

#endif
  nfc.SAMConfig();

}
void loop(void)
{

  uint32_t id;
  id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);

  if (id != 0)
  {
#ifdef NFC_DEMO_DEBUG
    Serial.print("Read card #");
    Serial.println(id);
    if(id==4251492471)
    {
      if (SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO))
      {
        if(SdPlay.setFile("12.afm"))
        {
          SdPlay.play();
          while(!SdPlay.isStopped())
          {
            SdPlay.worker();

          }
        }
      }
    }
  }

#endif
}

This is confusing:

#ifdef NFC_DEMO_DEBUG
#endif

What's the point?

I'll get rid of all the #ifdef:

#include <PN532.h>
#include <SPI.h>
#include <SimpleSDAudio.h>
#define PN532_CS 10
PN532 nfc(PN532_CS);

void setup() 
{
  nfc.begin();
  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) 
  {
    while (1); // halt
  }
  nfc.SAMConfig();

} // end of setup

void loop(void)
{
  uint32_t id;
  id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);

  if (id != 0)
  {
    Serial.print("Read card #");
    Serial.println(id);
    if(id==4251492471)
    {
      if (SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO))
      {
        if(SdPlay.setFile("12.afm"))
        {
          SdPlay.play();
          while(!SdPlay.isStopped())
          {
            SdPlay.worker();
          }
        }
      }
    }
  }
}

You have this:

    Serial.print("Read card #");
    Serial.println(id);

But no Serial.begin.

OK, now we can read the code, what is the problem exactly?

I don't understand this:

it's work good

but for one time not work as a loop!!!!

i mean that >>> the program should made an audio output every time i near the rfid card
but in this code it's search for the card successfully and made an audio output successfully but when the audio ended it's doesn't search about the card again !!!! so i need to made the program to search again without restarting the board from the button

RFID card readers typically return a single response for one card, and then don't "notice" that card until it moves away and comes back.