久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1877|回復: 1
收起左側

RC522讀卡歷程基于Arduino

[復制鏈接]
ID:379683 發表于 2019-7-1 22:05 | 顯示全部樓層 |閱讀模式
RC522讀卡歷程基于Arduino
  1. /*
  2. * --------------------------------------------------------------------------------------------------------------------
  3. * Example to change UID of changeable MIFARE card.
  4. * --------------------------------------------------------------------------------------------------------------------
  5. * This is a MFRC522 library example; for further details and other examples see: [url]https://github.com/miguelbalboa/rfid[/url]
  6. *
  7. * This sample shows how to set the UID on a UID changeable MIFARE card.
  8. * NOTE: for more informations read the README.rst
  9. *
  10. * @author Tom Clement
  11. * @license Released into the public domain.
  12. *
  13. * Typical pin layout used:
  14. * -----------------------------------------------------------------------------------------
  15. *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
  16. *             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
  17. * Signal      Pin          Pin           Pin       Pin        Pin              Pin
  18. * -----------------------------------------------------------------------------------------
  19. * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
  20. * SPI SS      SDA(SS)      10            53        D10        10               10
  21. * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
  22. * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
  23. * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
  24. */
  25.   /*
  26.        Name:    AccessSystem.ino
  27.        Created: 2016/7/10 12:22:07
  28.        Author:  Fing
  29.   */

  30.       #include <SoftwareSerial.h>
  31.       #include <Servo.h>
  32.       #include <MFRC522.h>
  33.       #include <SPI.h>

  34.       /*自定義RC522的兩個PIN口*/
  35.       #define SS_PIN 10
  36.       #define RST_PIN 9

  37.       #define BT_RX 2   //藍牙模塊端口
  38.       #define BT_TX 1
  39.       #define SERVO_PIN 6   //舵機端口
  40.       #define BUZZ_PIN 4
  41.       #define CARDS 2   //已驗證的卡片數目

  42.       MFRC522 mfrc522(SS_PIN, RST_PIN);   //新建RC522對象
  43.       SoftwareSerial BT(BT_TX, BT_RX);    //創建藍牙軟串口對象,避免沖突

  44.       Servo myservo;    //創建舵機對象
  45.       bool isAuthed = false;    //驗證是否通過
  46.       const byte AuthedID[1][4] = {0x66,0xA8,0x14,0xF9};  //可以保存多個卡片UID值
  47.       char val;   //用來存儲藍牙接收數據

  48.       void setup() {
  49.         Serial.begin(9600);//串口,波特率9600
  50.         BT.begin(9600);   //藍牙串口,波特率9600
  51.         myservo.attach(SERVO_PIN);    //連接舵機
  52.         SPI.begin();    //初始化SPI總線
  53.         mfrc522.PCD_Init();   //初始化MFRC522卡
  54.         pinMode(BUZZ_PIN, OUTPUT);    //初始化蜂鳴器
  55.         digitalWrite(BUZZ_PIN, HIGH);
  56.         myservo.write(45);
  57.         Serial.println(F("This code scan the MIFARE Classsic NUID."));
  58.         Serial.print(F("Using the following key:"));
  59.       }

  60.       // the loop function runs over and over again until power down or reset
  61.       void loop()
  62.       {
  63.         Authenticate();
  64.         if (isAuthed) {
  65.           OpenDoor();
  66.           BeepChecked();
  67.           delay(3000);
  68.           isAuthed = false;
  69.         }
  70.         CloseDoor();
  71.         isAuthed = false;
  72.         BTCheck();
  73.         delay(500);
  74.       }


  75.       //Servo開關門
  76.       void OpenDoor()
  77.       {
  78.         myservo.write(140);
  79.       }

  80.       void CloseDoor()
  81.       {
  82.         myservo.write(45);
  83.       }

  84.       //驗證卡片
  85.       void Authenticate()
  86.       {
  87.         //檢測是否有新卡片
  88.         if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) {
  89.           delay(50);
  90.           return;
  91.         }

  92.         //進行卡片驗證
  93.         for (byte num = 0; num < CARDS; num++)    //卡片循環  
  94.         {      
  95.           byte i;
  96.           for (i = 0; i < mfrc522.uid.size; i++)
  97.           {           
  98.             if (mfrc522.uid.uidByte[i] != AuthedID[num][i]) break;
  99.           }
  100.           Serial.println(F("The NUID tag is:"));
  101.           Serial.print(F("In hex: "));
  102.           printHex(mfrc522.uid.uidByte, mfrc522.uid.size);
  103.           Serial.println();
  104.           Serial.print(F("In dec: "));
  105.           printDec(mfrc522.uid.uidByte, mfrc522.uid.size);
  106.           Serial.println();
  107.           if (i == mfrc522.uid.size)
  108.           {
  109.             isAuthed = true;    //驗證通過
  110.             break;
  111.           }
  112.           else if (num == CARDS - 1) {
  113.             BeepFailed();
  114.           }

  115.         }
  116.       }

  117.       //藍牙掃描
  118.       void BTCheck() {
  119.         if (BT.available()) {
  120.           val = BT.read();
  121.           if (val == '1') {
  122.             OpenDoor();
  123.             BeepChecked();
  124.             delay(3000);
  125.             isAuthed = false;
  126.           }
  127.           val = 0;
  128.         }
  129.       }

  130.       void BeepChecked() {
  131.         digitalWrite(BUZZ_PIN, LOW);
  132.         delay(200);
  133.         digitalWrite(BUZZ_PIN, HIGH);
  134.       }

  135.       void BeepFailed() {
  136.         digitalWrite(BUZZ_PIN, LOW);
  137.         delay(100);
  138.         digitalWrite(BUZZ_PIN, HIGH);
  139.         delay(100);
  140.         digitalWrite(BUZZ_PIN, LOW);
  141.         delay(100);
  142.         digitalWrite(BUZZ_PIN, HIGH);
  143.       }
  144.       void printHex(byte *buffer, byte bufferSize) {
  145.       for (byte a = 0; a < bufferSize; a++) {
  146.             Serial.print(buffer[a] < 0x10 ? " 0" : " ");
  147.             Serial.print(buffer[a], HEX);
  148.           }
  149.         }

  150.         /**
  151.          * Helper routine to dump a byte array as dec values to Serial.
  152.          */
  153.        void printDec(byte *buffer, byte bufferSize) {
  154.        for (byte a = 0; a < bufferSize; a++) {
  155.             Serial.print(buffer[a] < 0x10 ? " 0" : " ");
  156.             Serial.print(buffer[a], DEC);
  157.           }
  158.         }
復制代碼

回復

使用道具 舉報

ID:1 發表于 2019-7-2 15:42 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品亚洲日本在线观看 | 91高清视频在线观看 | 青草久久免费视频 | 精品伊人久久 | 国产欧美日韩一区二区三区在线 | 欧美极品在线 | 国产综合久久 | 人人99 | a级在线| 国产福利91精品 | 国产一区二区三区四区在线观看 | 久久三区 | 香蕉91| 中文字幕91av | 国产精品欧美一区二区 | 久久久久1 | 亚洲日日夜夜 | 一区二区三区高清 | 91精品国产91久久久久福利 | a国产一区二区免费入口 | 日韩中文字幕 | 99精品欧美一区二区三区 | 亚洲欧美国产视频 | 北条麻妃一区二区三区在线视频 | 久草.com | 真人女人一级毛片免费播放 | 在线播放国产一区二区三区 | 亚洲成av人影片在线观看 | 在线视频 亚洲 | 美女一区| 在线观看av中文字幕 | 在线看成人av | 欧美日韩国产传媒 | 国产精品久久久久久久久久久久久 | 亚洲国产91 | 午夜免费av | 国产小视频在线 | 中文字幕国产精品 | 无码国模国产在线观看 | 日韩二三区 | 欧美自拍视频 |