NFC标签v1.0& arduino UNO

时间:2017-11-16 05:40:37

标签: arduino nfc

我的老师刚给了我一个项目的NFC标签v1.0。我必须用手机打开门。

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

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

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

我可以连接手机并使用它来更改块。问题在于,当我尝试时,LED根本不起作用。我尝试了LED并且他正在工作,我也尝试了带有LED的Arduino UNO上的数字引脚,它也可以工作。此外,显示器不会显示任何printLn。

我用这种方式连接它们:

SCL - RX

SDA - TX

GND - GND

5V - VCC

我还使用了一个代码进行调试,但无论我使用什么地址来阅读,我都会在使用手机更改应用程序之后获得数字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有时无法正常工作,经过一些尝试后它再次开始工作。

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

1 个答案:

答案 0 :(得分:1)

I2C引脚的正确连接是:

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

This部分在您连接时支持Uart通信。您为所使用的部件提供的link仅支持I2C,并且在您连接时无法正常工作。