system
March 5, 2013, 10:27am
1
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
}
system
March 5, 2013, 11:01am
3
sorry what you mean by tage ??
system
March 5, 2013, 11:32am
4
Hi,
please use the line if (SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO)) only once at setup.
system
March 7, 2013, 6:11pm
5
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.
system
March 8, 2013, 8:20am
7
#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
}
system
March 8, 2013, 8:22am
8
thanx ........ this is the code
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!!!!
system
March 21, 2013, 4:44pm
13
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.