私の先生は、プロジェクト用にNFCタグv1.0を教えてくれました。私はドアを開けるために私の電話を使わなければならない。NFCタグv1.0&arduino UNO
私は、インターネット上で検索し、私はこのコードを見つけました:
#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/
を私は携帯電話に接続して、ブロックを変更するためにそれを使用することができます。問題は、私が試してみると、LEDがまったく動かないということです。私はLEDを試して、彼は働いている、私はまた、LEDとArduino UNOのデジタルピンを試してもそれも動作します。また、モニターにはprintLn以外のものは表示されません。
私はそれらを接続するには、この方法を使用:
SCL - RX
SDA - TX
GND - GND
5V - VCC
を私ものコードを使用デバッグすることができますが、私がreadByteに使用するアドレスにかかわらず、私はいつもアプリを使ってそれを変更するために電話を使用した後でも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);
}
出力:私はLEDの作業を置くことができれば
checking for nfc
127
127
32639
8355711
result:
127
、私はすでにPIN5の終了時に電力変換器を有するトランジスタを持っているので、ドアのロックを解除することができます。
ちなみに、NFCが動作しないことがあるのはなぜか分かりませんし、試してみると再び動作することがあります。
何か助けていただければ幸いです。ありがとうございます。
なぜI2CをUARTに接続しましたか? –
あなたは間違ったピンを使用しています – Gerhard