佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1230|回复: 0

新手求幫助。RFID門禁問題

[复制链接]
发表于 12-4-2014 09:16 PM | 显示全部楼层 |阅读模式


我是這個模塊,現在的問題是還沒解決屋內解鎖問題
我已有按鈕,但不會編寫下一步,求幫助

以下是我的arduino code
  1. #include <EEPROM.h>
  2. #define EEPROM_write(address, p) {int i = 0; byte *pp = (byte*)&(p);for(; i < sizeof(p); i++) EEPROM.write(address+i, pp<i>);}
  3. #define EEPROM_read(address, p)  {int i = 0; byte *pp = (byte*)&(p);for(; i < sizeof(p); i++) pp<i>=EEPROM.read(address+i);}

  4. char val; // variable to receive data from the serial port
  5. const int ENPin = 2;     // 定義使能管腳
  6. int ENState = 1;  //初始化使能狀態為高電平
  7. // lock 1
  8. int PWMA = 2;
  9. int LED = 3;

  10. unsigned long ID = 0;                    unsigned long IDR = 0;
  11. unsigned long ID1 = 0;          unsigned long IDR1 = 0;
  12. unsigned long ID2 = 0;          unsigned long IDR2 = 0;
  13. unsigned long ID3 = 0;                   unsigned long IDR3 = 0;
  14. unsigned long ID4 = 0;                   unsigned long IDR4 = 0;
  15. unsigned long ID5 = 4241884143;                   unsigned long IDR5 = 0;


  16. void setup()
  17.   {
  18.   Serial.begin(9600);
  19.   pinMode(ENPin, INPUT);
  20.   pinMode(PWMA,OUTPUT);
  21.   pinMode(LED, OUTPUT);
  22.   EEPROM_write(0, ID);
  23.   EEPROM_write(10, ID1);
  24.   EEPROM_write(20, ID2);
  25.   EEPROM_write(30, ID3);
  26.   EEPROM_write(40, ID4);
  27.   EEPROM_write(50, ID5);
  28.   
  29.   EEPROM_read(0, IDR);
  30.   Serial.print("ID card1: ");
  31.   Serial.println(IDR);
  32.   EEPROM_read(10, IDR1);
  33.   Serial.print("ID card2: ");
  34.   Serial.println(IDR1);
  35.   EEPROM_read(20, IDR2);
  36.   Serial.print("ID card3: ");
  37.   Serial.println(IDR2);
  38.   EEPROM_read(30, IDR3);
  39.   Serial.print("ID card4: ");
  40.   Serial.println(IDR3);
  41.   EEPROM_read(40, IDR4);
  42.   Serial.print("ID card5: ");
  43.   Serial.println(IDR4);
  44.   EEPROM_read(50, IDR5);
  45.   Serial.print("ID card6: ");
  46.   Serial.println(IDR5);

  47.   }

  48.   void loop()
  49.   {
  50.   for(ENState = digitalRead(ENPin) ; ENState == LOW && Serial.available() > 0; ) //判斷使能端是否為低電平,是且串口有輸入,則讀入卡號
  51.   {        
  52.     ID = ID * 10 + int(Serial.read()-'0'); //讀出卡號
  53.     delay(2);                        //加個小延時,讓串口有充裕的時間讀出資料
  54.   }
  55.   if(ID != 0)             //如果ID記憶體的值不為0,則輸出該卡號
  56. {
  57.      Serial.println(ID);
  58.       if(ID == IDR) Serial.println("welcome! TimYiu");     //判断是否与EEPROM中的卡号相匹配
  59.          if(IDR==ID)
  60.          {
  61.              digitalWrite(LED, HIGH);   // set the LED on  
  62.              delay(2000);              // wait for a second  
  63.              digitalWrite(LED, LOW);    // set the LED off  
  64.              delay(1000);              // wait for a second  
  65.          }
  66.      else if(ID == IDR1) Serial.println("welcome! Thomes");
  67.           if(IDR1==ID)
  68.           {
  69.              digitalWrite(LED, HIGH);   // set the LED on  
  70.              delay(2000);              // wait for a second  
  71.              digitalWrite(LED, LOW);    // set the LED off  
  72.              delay(1000);              // wait for a second  
  73.          }
  74.      else if(ID == IDR2) Serial.println("welcome! Koei");
  75.            if(IDR2==ID)
  76.           {
  77.              digitalWrite(LED, HIGH);   // set the LED on  
  78.              delay(2000);              // wait for a second  
  79.              digitalWrite(LED, LOW);    // set the LED off  
  80.              delay(1000);              // wait for a second  
  81.          }
  82.      else if(ID == IDR3) Serial.println("welcome! Wai");
  83.           if(IDR3==ID)
  84.           {
  85.              digitalWrite(LED, HIGH);   // set the LED on  
  86.              delay(2000);              // wait for a second  
  87.              digitalWrite(LED, LOW);    // set the LED off  
  88.              delay(1000);              // wait for a second  
  89.          }
  90.      else if(ID == IDR4) Serial.println("welcome! Mother");
  91.           if(IDR4==ID)
  92.           {
  93.              digitalWrite(LED, HIGH);   // set the LED on  
  94.              delay(2000);              // wait for a second  
  95.              digitalWrite(LED, LOW);    // set the LED off  
  96.              delay(1000);              // wait for a second  
  97.          }
  98.      else if(ID == IDR5) Serial.println("welcome! Father");
  99.          if(IDR5==ID)
  100.           {
  101.           leftForw();  // turn to left         
  102.            }
  103.       else Serial.println("sorry,you are not allowed.");
  104.            ID = 0;                    //清0
  105.         }
  106.   
  107.             }

  108.              void leftForw(){
  109.              if( Serial.available() )       // if data is available to read
  110.               {
  111.              val = Serial.read();}
  112.              digitalWrite(PWMA, HIGH);   // set the LED on  
  113.              delay(2000);              // wait for a second  
  114.              digitalWrite(PWMA, LOW);    // set the LED off  
  115.              //delay(1000);   
  116.              }
  117. </i></i>
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 20-4-2024 02:19 AM , Processed in 0.072904 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表