【求教】 ARDUINO&RFID模块(RF122)按范例连接 烧录后读不到
rfid吧
全部回复
仅看楼主
level 1
Vector_Yang 楼主
【求教】RFID模块(RF122)按范例连接 烧录后一直读不到卡
请问是哪里出了问题呢
arduino引脚 RFID模块引脚
D5 RST
D10 SS
D11 MOSI
D12 MISO
D13 SCK
范例如下:
//整理者:极客工坊bg1lsy ([email protected])
//整理时间:2013.05.25
#include <SPI.h>
#include <RFID.h>
RFID rfid(10,5); //D10--读卡器MOSI引脚、D5--读卡器RST引脚
int led = 9;
int relay=7;
bool state=true;
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.init();
pinMode(led, OUTPUT);
pinMode(relay,OUTPUT);
digitalWrite(relay,HIGH);
}
void loop()
{
unsigned char type[MAX_LEN];
//找卡
if (rfid.isCard( type)) {
Serial.println("Find the card!");
;
// Show card type
ShowCardType(type);
//读取卡序列号
if (rfid.readCardSerial()) {
Serial.print("The card's number is : ");
Serial.print(rfid.serNum[0],HEX);
Serial.print(rfid.serNum[1],HEX);
Serial.print(rfid.serNum[2],HEX);
Serial.print(rfid.serNum[3],HEX);
Serial.print(rfid.serNum[4],HEX);
Serial.println(" ");
ShowUser(rfid.serNum);
}
//选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡
Serial.println(rfid.selectTag(rfid.serNum));
}
rfid.halt();
}
void ShowCardType( unsigned char* type)
{
Serial.print("Card type: ");
if(type[0]==0x04&&type[1]==0x00)
Serial.println("MFOne-S50");
else if(type[0]==0x02&&type[1]==0x00)
Serial.println("MFOne-S70");
else if(type[0]==0x44&&type[1]==0x00)
Serial.println("MF-UltraLight");
else if(type[0]==0x08&&type[1]==0x00)
Serial.println("MF-Pro");
else if(type[0]==0x44&&type[1]==0x03)
Serial.println("MF Desire");
else
Serial.println("Unknown");
}
void ShowUser( unsigned char* id)
{
//EE 9B 9C 38 D1
if( id[0]==0xEE && id[1]==0x9B && id[2]==0x9C && id[3]==0x38 ) {
Serial.println("Hello Mary!");
state=RelayStatus(state);
}
else if(id[0]==0x24 && id[1]==0x12 && id[2]==0xE0 && id[3]==0x13) {
Serial.println("Hello MicroHao!");
state=RelayStatus(state);
}
else{
Serial.println("Hello unkown guy!");
BlinkLED();
}
}
bool RelayStatus(bool status)
{
if(status)
{
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(relay,LOW);
return false;
}
digitalWrite(led, LOW); // turn the LED on (HIGH is the voltage level)
digitalWrite(relay,HIGH);
return true;
}
void BlinkLED()
{
digitalWrite(relay,HIGH);
for(int i=0;i<3;i++)
{
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000);
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}
}
2017年04月20日 01点04分 1
level 1
同样问题,撸主解决了了吗?
2018年11月11日 00点11分 2
1