首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino NFC PN532

Arduino NFC PN532
EN

Stack Overflow用户
提问于 2013-09-19 21:21:23
回答 1查看 3.3K关注 0票数 0

Hello试图制作一个程序来比较NFC标记#ID,我非常习惯于Arduino,但我不习惯SPI编程。

我找了很多,但我真的不知道我到底需要什么。

我正在尝试匹配NFC标记#ID和变量NFC1。

有谁可以帮我?请?

我只是需要一些信息/帮助,使如果声明工作。

代码语言:javascript
复制
#include <PN532.h>
#include <SPI.h>

//SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)

/*Chip select pin can be connected to D10 or D9 which is hareware optional*/
/*if you the version of NFC Shield from SeeedStudio is v2.0.*/
#define PN532_CS 10
PN532 nfc(PN532_CS);
#define  NFC_DEMO_DEBUG 1

int BUZZER = 6;
uint32_t NFC1 = 3795120787;
int NFC2 = 3262404755;
int NFC3 = 46356883;
int NFC4 = 35320979;
int NFC5 = 3257334163;

void setup(void) {

pinMode(BUZZER, OUTPUT);
#ifdef NFC_DEMO_DEBUG
Serial.begin(9600);
Serial.println("Hello!");
#endif
nfc.begin();

uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
#ifdef NFC_DEMO_DEBUG
Serial.print("Didn't find PN53x board");
Serial.print("");
#endif
while (1); // halt
}
#ifdef NFC_DEMO_DEBUG
// Got ok data, print it out!
Serial.print("Found chip PN5"); 
Serial.println((versiondata>>24) & 0xFF, HEX);
/*Serial.print("Firmware ver. "); 
Serial.print((versiondata>>16) & 0xFF, DEC);
Serial.print('.'); 
Serial.println((versiondata>>8) & 0xFF, DEC);
Serial.print("Supports "); 
Serial.println(versiondata & 0xFF, HEX);*/
#endif
// configure board to read RFID tags and cards
nfc.SAMConfig();
}


void loop(void) {
uint32_t id;
// look for MiFare type cards
id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);

if (id != 0) {
#ifdef NFC_DEMO_DEBUG
Serial.println("");
Serial.print("Card #"); 
Serial.println(id);
analogWrite(BUZZER, 50);
delay(100);
analogWrite(BUZZER, 0);
delay(1000);
#endif
//char ch = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);

if(NFC1 = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A)){

    analogWrite(6, 255);
    delay(250);
    analogWrite(6, 0);
  /*analogWrite(BUZZER, 50);
  delay(50);
  analogWrite(BUZZER, 0);
  delay(50);
  analogWrite(BUZZER, 50);
  delay(50);
  analogWrite(BUZZER, 0);*/}

  else {
    analogWrite(5, 255);
    delay(250);
    analogWrite(5, 0);
  /*analogWrite(BUZZER, 50);
  delay(100);
  analogWrite(BUZZER, 0);
  delay(100);
  analogWrite(BUZZER, 50);
  delay(100);
  analogWrite(BUZZER, 0);
  delay(100);
  analogWrite(BUZZER, 50);
  delay(100);
  analogWrite(BUZZER, 0);*/}
  }
   }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-21 20:18:57

常见的错误和编译器可以帮助您

更改这一行:

代码语言:javascript
复制
uint32_t NFC1 = 3795120787;

到这一行:

代码语言:javascript
复制
const uint32_t NFC1 = 3795120787;

现在您将得到一个编译器错误,这将导致您去:o。

这一行需要一个==,而不是=。不是这样的:

代码语言:javascript
复制
if(NFC1 = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A)){   / doh!

这是:

代码语言:javascript
复制
if(NFC1 == nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A)){   / ahh

附带注意,这是一个常见的打字错误和原因。

代码语言:javascript
复制
if(1 == somevar)  // is superior to

if(somevar == 1)  // something that seems exactly the same

因为编译器会告诉您

代码语言:javascript
复制
if(1 = somevar)  // no, you can't assign to a constant

if(somevar = 1)  // okay, whatever you want boss

这个建议来自于“写实心代码”,Maguire和Moore,并为我提供了良好的服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18905121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档