NFC 标签 v1.0 & arduino UNO

NFC tag v1.0 & arduino UNO

我的老师刚刚给了我一个项目的 NFC 标签 v1.0。我必须用我的 phone 来解锁一扇门。

我在网上搜索了一下,刚找到这段代码:

#include "NfcTag.h"
#include <Wire.h>

NfcTag nfcTag;
int led = 5;
bool flag = false;
bool preFlag = false;
void setup(){
  Serial.begin(9600);
  pinMode(led,OUTPUT);
  nfcTag.init();
}

void loop(){
  flag = nfcTag.readByte(EEPROM_I2C_LENGTH-1) == 0xff?true:false;
  if(flag != preFlag){
    Serial.println("get remote NFC control signal!");
    if(flag == true){
      Serial.println("led will light up!");
      digitalWrite(led,HIGH);
    }else{
      Serial.println("led will turn dark!");
      digitalWrite(led,LOW);
    }
    preFlag = flag;
  }
  delay(5*1000);
}

这来自他们的 wiki:http://wiki.seeed.cc/Grove-NFC_Tag/

我可以连接 phone 并用它来改变方块。问题是当我尝试时,LED 根本不工作。我尝试了 LED,他正在工作,我还尝试了带有 LED 的 Arduino UNO 上的数字引脚,它也能正常工作。此外,显示器不显示任何 printLn。

我是这样连接的:

SCL-RX

SDA-TX

接地 - 接地

5V - VCC

我也用代码调试过,但是无论我用什么地址读取字节,用phone用app改了,总是得到127这个数字

#include "NfcTag.h"
#include <Wire.h>

NfcTag nfcTag;
bool flag = false;
bool preFlag = false;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("starting sequence");
  nfcTag.init();
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("checking for nfc");
  //flag = nfcTag.readByte(EEPROM_I2C_LENGTH-1) == 0xff?true:false;
  //Serial1.println(flag);
  Serial.println(nfcTag.getICNumber());
  Serial.println(nfcTag.getAFI());
  Serial.println(nfcTag.getRFU());
  Serial.println(nfcTag.getMemoryVolume());
  Serial.println("result:");
  Serial.println(nfcTag.readByte(EEPROM_I2C_LENGTH-1)); //I tried changeing manualy the value, but the output still 127.

  delay(2000);

}

输出:

checking for nfc
127
127
32639
8355711
result:
127

如果我可以让 LED 工作,我已经在 pin5 的出口有一个带有电源转换器的晶体管,所以门可以解锁。

顺便说一下,我不知道为什么有时 NFC 不起作用,但在尝试一些之后它又开始起作用了。

任何帮助将不胜感激:) 谢谢。

I2C 引脚的正确连接是:

  • SCL - PC5(模拟 A5)
  • SDA - PC4(模拟 A4)

This part supports Uart communications as you wired it. The link您提供的您正在使用的部件仅支持 I2C,无法像您接线时那样工作。