|
本帖最后由 日昏昏兮路遥遥 于 2017-10-22 00:35 编辑
参赛项目:
适用学校门禁卡的实验室刷卡门锁
参赛组员:
人数:1人
论坛ID:日昏昏兮路遥遥
简介:大一,入坑Arduino半年,终于啃完了《Arduino程序设计基础》
项目简介:
实验室去的人多,不可能每个成员都配一把钥匙,且钥匙也不方便带。
近期准备改造为智能实验室,方便的刷卡门锁势在必行。
学校125KHz的门禁卡,只能在宿舍大门用,甚是鸡肋,但又不得不天天带着。
做一个使用学校门禁卡的刷卡门锁,通过舵机拉动把手开门,不破坏门的结构及原有功能。
成果:long a = **********; //我
long b = **********; //同学
long kh = 0;
void setup()
{
pinMode(5,OUTPUT); //绿灯
pinMode(6,OUTPUT); //红灯
pinMode(2,OUTPUT); //继电器常高电位,低电位触发,电机拉
pinMode(3,OUTPUT); //继电器常高电位,低电位触发,电机放线
pinMode(4,INPUT_PULLUP); //设置为输入上拉模式,使端口稳定在高电平
Serial.begin(9600);
}
void loop()
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(5,1); //亮绿灯提示单片机启动
if(analogRead(A0) < 700) //检测电压,低于7v亮红灯报警
{
digitalWrite(6,1);
}
else
{
digitalWrite(6,0);
}
kh = Read_ID();
if (kh == a || kh == b) //识别成功
{
digitalWrite(2,LOW); //拉
delay(2000);
digitalWrite(2,HIGH);
delay(6000); //等6秒人进门
digitalWrite(3,LOW);
delay(900); //放
kh = 0;
}
}
long Read_ID() //RFID读卡模块 调取函数返回卡号
{
int flag=0,RX_Flag=0;
char Code[14];
long Num=0;
int i;
for(i=0;(Serial.available()>0);i++){
char temp=Serial.read();
delay(2);
if(temp==0X02){
flag=1;
i=0;
RX_Flag=0;}
if(flag==1){
if(temp==0X03){
flag=0;
if(i==13){
RX_Flag=1;}
else{
RX_Flag=0;}
break;}
Code=temp;} }
flag=0;
if(RX_Flag==1){
for(i=5;i<11;i++){
Num<<=4;
if(Code>64){
Num+=((Code)-55);}
else{
Num+=((Code)-48);}}
//Serial.println(Num);
while(Serial.read()>0);
RX_Flag=0;}
return Num;
}
|
|