Go Down

Topic: i want to replay the sound (Read 1 time) previous topic - next topic

Nick Gammon

Here, let me format it for you:

Code: [Select]

#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
}


Nick Gammon

This is confusing:

Code: [Select]

#ifdef NFC_DEMO_DEBUG
#endif


What's the point?

I'll get rid of all the #ifdef:

Code: [Select]

#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:

Code: [Select]

    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:

Quote

it's work good

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


mostafa_zied

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

Nick Gammon

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.

Go Up