查看: 284|回复: 4

[未解决] 求大佬们给个Arduino uno+RC522+舵机的门禁全教程

[复制链接]

该用户从未签到

发表于 2021-6-11 01:39 | 显示全部楼层 |阅读模式
本人纯新小白,啥都不懂,简单点的代码还能稍微明白点意思
目前手上有个Arduino uno的板子,一个RC522的板子,一个MG90s的金属舵机,
求一个门禁的全教程就是包含接线方法,库,还有源码的
求求大佬们了

该用户从未签到

 楼主| 发表于 2021-6-11 01:40 | 显示全部楼层

#include"rfid.h"
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);
RFID rfid; //create a variable type of RFID
#define relayPin 8  //relay module attach to pin8
uchar serNum[5]; // array to store your ID

void setup()
{
  lcd.init(); //initialize lcd
  lcd.backlight(); //turn on the backlight
  Serial.begin(9600);
  rfid.begin(7, 5, 4, 3, 6, 2);//rfid.begin(IRQ_PIN,SCK_PIN,MOSI_PIN,MISO_PIN,NSS_PIN,RST_PIN)
  delay(100);
  rfid.init(); //initialize the RFID
  pinMode(relayPin, OUTPUT);  //set relayPin as OUTPUT
  digitalWrite(relayPin,HIGH); //and high level
  //Serial.begin(9600);
  lcd.setCursor(0,0);
  lcd.print("    Welcome!    "); //print"    Welcome!    "
  delay(2000);//delay 2s
}

void loop()
{
  uchar status;
  uchar str[MAX_LEN];
  status = rfid.request(PICC_REQIDL, str);
  if (status != MI_OK)
  {
    return;
  }
  
  rfid.showCardType(str);
  status = rfid.anticoll(str);
  
  if (status == MI_OK)
  {
    //Serial.print("The card's number is: ");
    lcd.setCursor(0,0);
    lcd.print(" ID: ");
    memcpy(serNum, str, 5);
    rfid.showCardID(serNum);//show the card ID
    // Serial.println();

    //1号大宝贝的卡
    // 显示你饭卡的card ID 8F3D0329
    uchar* id = serNum;
    if( id[0]==0xDA && id[1]==0x5C && id[2]==0x20 && id[3]==0x86 )
    {
      digitalWrite(relayPin,LOW);
      lcd.setCursor(0,1);
      lcd.print(" Hello dou ");
      delay(2000);
      lcd.clear();
      digitalWrite(relayPin,HIGH);
       }   
  else if( id[0]==0x8B && id[1]==0x95 && id[2]==0xC5 && id[3]==0x22 )
    {
      digitalWrite(relayPin,LOW);
      lcd.setCursor(0,1);
      lcd.print(" Hello Chen ");
      delay(2000);
      lcd.clear();
      digitalWrite(relayPin,HIGH);
    }

  
   else
    {
      //Serial.println("Hello unkown guy!");
      lcd.setCursor(0,1);
      lcd.print("Hello bye");
      delay(2000);
      lcd.clear();
    }
  }
  lcd.setCursor(0,0);
  lcd.print("    Welcome!    ");
  delay(2000);
  rfid.halt(); //command the card into sleep mode
}

该用户从未签到

 楼主| 发表于 2021-6-11 01:41 | 显示全部楼层
楼上这个是群里一个好友发我的,可以连上一个lcd的屏幕,我想去掉它,然后连接的5V的继电器,我也用不到,也想去掉,然后加上个舵机,哪个大佬会弄啊

该用户从未签到

发表于 2021-6-11 19:43 | 显示全部楼层
不急的话,下周二回复你,这几天放假,没时间

该用户从未签到

发表于 2021-6-15 18:55 | 显示全部楼层
#include "RC522.h"
#include <SPI.h>
#include <Servo.h>
unsigned char serNum[5];
Servo myservo;
void setup(){
  Serial.begin(9600);
  myservo.attach(9);
  SPI.begin();
  pinMode(chipSelectPin,OUTPUT);
  digitalWrite(chipSelectPin, LOW);
  pinMode(NRSTPD,OUTPUT);
  MFRC522_Init();        
  }

void loop(){
  unsigned char status;
  unsigned char str[MAX_LEN];
  status =MFRC522_Request(PICC_REQIDL,str);
  if (status ==MI_OK){
    status = MFRC522_Anticoll(str);
  }
  if (status==MI_OK){
    memcpy(serNum,str,5);
    Serial.print("ID:");
    ShowCardID(serNum);
    unsigned char* id =serNum;
    if(id[0]==0x90 && id[1]==0x71 && id[2]==0xF6 && id[3]==0x75 ){     //id地址根据自己的读写卡ID地址更改
      myservo.write(90);
      Serial.println("HELLO");
    }
    else {
      myservo.write(0);
      Serial.println("Stranger");
    }
  }
  MFRC522_Halt();
  delay(1000);
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

点灯科技的blink库有没有设备到设备间分享数据功能啊
点灯科技的blink库有没有
请问下,点灯科技的blink库里有没有接受其他设备的函数程序啊? 我想设计4个8266设
OLED 128*64自制可达10000000个选项的菜单(已更新)
OLED 128*64自制可达10000
OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
DIY炫彩灯带,竟如此简单,更有硬件开发工具免费领!
DIY炫彩灯带,竟如此简单
什么是涂鸦Arduino SDK? Arduino 是全球最流行的开源硬件平台,涂鸦官方推出的 Ardui
ESP8266利用Blinker、小爱同学和本地按钮控制4路开关
ESP8266利用Blinker、小爱
案例介绍:小爱同学(安卓、苹果、小爱音响均可)控制4路开关 硬件需求:ESP8266 node
Seeeduion XIAO
Seeeduion XIAO
请问有那位大神用Seeeduion XIAO做过HID设备吗 求教程 网上有些说要用 TinyUSB来做 不
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表