Go Down

Topic: i want to replay the sound (Read 2014 times) previous topic - next topic

mostafa_zied

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
}

Nick Gammon

Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

mostafa_zied

sorry what you mean by tage ??

Tuttut

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

mostafa_zied

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

Nick Gammon

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

Code: [Select]

}
}
}
}
}

#endif
}


Quote

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.
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

mostafa_zied

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
}

mostafa_zied

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

Nick Gammon

Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

mostafa_zied


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
}

Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

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!!!!

Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

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.
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

Go Up