接上文
arduino 的优势就是每个模块的库文件比较全
都能找到对应的库函数这里我们需要rfid 的库函数
代码如下
#include <SPI.h>
#include <RFID.h>
#include <Servo.h>
Servo myservo;
extern uint8_t SmallFont[];
RFID rfid(10,8); //D10--接上SDA、D8--接RST D13--接上SCK D11--接上MOSI D12--接上MISO RQ不接
unsigned char serNum[5];
void setup()
{
Serial.begin(9600);//串口用来读取需要添加的卡号,然后手动写到程序里
pinMode(7,OUTPUT);
myservo.attach(9);//舵机针脚位9
myservo.write(3); //舵机初始化0度
SPI.begin();
rfid.init();
}
void loop()
{
long randNumber = random(0, 20);
unsigned char i,tmp;
unsigned char status;
unsigned char str[MAX_LEN];
unsigned char RC_size;
//找卡
rfid.isCard();
//读卡号
if (rfid.readCardSerial())
{
Serial.print("your card id is : ");
Serial.print(rfid.serNum[0]);
Serial.print(" , ");
Serial.print(rfid.serNum[1]);
Serial.print(" , ");
Serial.print(rfid.serNum[2]);
Serial.print(" , ");
Serial.print(rfid.serNum[2]);
Serial.print(" , ");
Serial.print(rfid.serNum[4]);
Serial.println(" ");
//下面是改卡号区域
if(rfid.serNum[0]==001||rfid.serNum[0]==002){//第一道筛选
if(rfid.serNum[0]==001&&rfid.serNum[1]==002)//第二道筛选,支持一人一号
{
Serial.println("Welcome ");
digitalWrite(7,HIGH) ;
delay(1000);
digitalWrite(7,LOW) ;
Serial.println("open");
myservo.write(90);
}
if(rfid.serNum[0]==002&&rfid.serNum[1]==002)//rfid.serNum[0]==161 这个0是id位置,可以自行更改
{
Serial.println("Welcome ");
Serial.println("shun");
digitalWrite(7,HIGH) ;
delay(1000);
digitalWrite(7,LOW) ;
myservo.write(90);
}
}
}
if (!rfid.readCardSerial()){
}
rfid.halt(); //休眠
}
隐秘了卡号,大家在这个基础上修改即可
通过if语句比对就可以了
这里提到了休眠的问题
我们可以添加一个开关在电池与arduino 之间放到门外,
哈哈太低端的休眠装置