查看: 152|回复: 8

[未解决] 求大神指点迷津

[复制链接]
  • TA的每日心情
    郁闷
    2019-1-9 23:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2019-1-8 22:22 | 显示全部楼层 |阅读模式
    本帖最后由 zz900712 于 2019-1-8 22:23 编辑

    我想做一个刷卡 充电  的程序
    刷一次卡 3小时   刷3次卡是9小时  然后这个刷卡次数可以循环   这个时间时根据刷卡的次数去倒计时

    现在是刷一次卡就开始计时了   刷第二次已经没有反应了   怎么解决   求指点





    #include <SPI.h>
    #include <RFID.h>
    RFID rfid(10, 5);   //D10--读卡器MOSI引脚、D5--读卡器RST引脚
    String N = ""; //字符串转整型用的变量
    long Frequency = 800;//频率
    unsigned char* ID = rfid.serNum;//无符号字符型指针
    unsigned long Record; //用于记录开始时间
    unsigned long Now; //当前时间
    unsigned long deleyTime = "";//3小时

    int addNum = 0; //写入读卡次数
    int redNum = 0; //读取读卡次数
    int Buzzer = 5;//蜂鸣器针脚
    int Green = 3;  //正常启动指示灯
    int Blue = 2;   //读卡指示灯
    int Red1 = A2;   //读卡一次
    int Red2 = A1;   //读卡二次
    int Red3 = A0;   //读卡三次
    int Relay = 3;  //继电器

    void setup()
    {
      Serial.begin(9600);
      SPI.begin();
      rfid.init();
      pinMode(Buzzer, OUTPUT);
      pinMode(Green,OUTPUT);
      pinMode(Blue, OUTPUT);
      pinMode(Red1, OUTPUT);
      pinMode(Red2, OUTPUT);
      pinMode(Red3, OUTPUT);
      pinMode(Relay, OUTPUT);
      digitalWrite(Green,HIGH);
    }

    void loop()
    {
      //找卡
      rfid.isCard();
      //读取卡序列号
      if (rfid.readCardSerial())
      {
        Serial.print("The card's number is  : ");
        Serial.print(rfid.serNum[0], HEX);
        Serial.print(rfid.serNum[1], HEX);
        Serial.print(rfid.serNum[2], HEX);
        Serial.print(rfid.serNum[3], HEX);
        Serial.print(rfid.serNum[4], HEX);
        Serial.println(" ");
        //刷卡指示灯
        digitalWrite(Blue,HIGH);
        delay(200);
        digitalWrite(Blue,LOW);
        delay(200);
        digitalWrite(Blue,HIGH);
        delay(200);
        digitalWrite(Blue,LOW);
        //运行检测卡程序
        ShowUser();
        Times();

      }
    }

    void ShowUser()
    {
      //39 2C 5A 29 66  白卡
      if ( ID[0] == 0x39 && ID[1] == 0x2C && ID[2] == 0x5A && ID[3] == 0x29 ) {
        //刷卡声音
        tone(Buzzer, Frequency);
        delay(100);
        noTone(Buzzer);
        delay(100);
        tone(Buzzer, Frequency);
        delay(100);
        noTone(Buzzer);
        //刷卡次数增加
        addNum++;   
        //串口打印信息
        Serial.println("Hello Yzp!");
        Serial.println("addNum is :");
        Serial.print(addNum);
      }
      //2D EA DB D9 C5  纽扣卡
      else if (ID[0] == 0x2D && ID[1] == 0xEA && ID[2] == 0xDB && ID[3] == 0xD9) {
        //刷卡声音
        tone(Buzzer, Frequency);
        delay(100);
        noTone(Buzzer);
        delay(100);
        tone(Buzzer, Frequency);
        delay(100);
        noTone(Buzzer);   
        //刷卡次数增加
        addNum++;
        //串口打印信息
        Serial.println("Hello Yzz!");
        Serial.print("addNum is :");
        Serial.println(addNum);
      }
      else {
        //无卡声音
        tone(Buzzer, Frequency);
        delay(1000);
        noTone(Buzzer);
        //串口打印信息
        Serial.println("Hello unkown guy!");
      }

      //刷卡次数
      if (addNum > 3)
      {
        addNum = 0;
      }

      //读计数亮灯
      if ( addNum == 0) {
        //指示灯
        digitalWrite(Red1, LOW);
        digitalWrite(Red2, LOW);
        digitalWrite(Red3, LOW);
       //停止倒计时 关闭继电器   
      }
      else if ( addNum == 1) {
        digitalWrite(Red1, HIGH);
        digitalWrite(Red2, LOW);
        digitalWrite(Red3, LOW);
        //开始倒计时三小时
        deleyTime = 180000;

      }
      else if ( addNum == 2) {
        digitalWrite(Red1, HIGH);
        digitalWrite(Red2, HIGH);
        digitalWrite(Red3, LOW);
        //开始倒计时六小时
        deleyTime = 360000;
      }
      else if ( addNum == 3) {
        digitalWrite(Red1, HIGH);
        digitalWrite(Red2, HIGH);
        digitalWrite(Red3, HIGH);
        //开始倒计时九小时
        deleyTime = 540000;
      }
      }

    void Times()
    {
      Record = millis (); //记录当前时间
      Now = millis ();//现在时间
      while (Now - Record < deleyTime )
      {
        Now = millis ();
      }

    }


  • TA的每日心情
    郁闷
    2019-1-9 23:00
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-1-9 09:32 来自手机 | 显示全部楼层
    顶起来。           
  • TA的每日心情
    郁闷
    2019-1-9 23:00
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-1-9 11:38 来自手机 | 显示全部楼层
    顶起来。         
  • TA的每日心情
    开心
    2018-11-18 00:25
  • 签到天数: 238 天

    [LV.7]常住居民III

    发表于 2019-1-9 14:11 | 显示全部楼层
    把:
      while (Now - Record < deleyTime )
    改为:
      if (Now - Record < deleyTime )

    试试是不是可以连续刷了?
  • TA的每日心情
    郁闷
    2019-1-9 23:00
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-1-9 22:16 | 显示全部楼层
    skypup 发表于 2019-1-9 14:11
    把:
      while (Now - Record < deleyTime )
    改为:

    我试试
                   
  • TA的每日心情
    郁闷
    2019-1-9 23:00
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-1-9 22:32 | 显示全部楼层
    skypup 发表于 2019-1-9 14:11
    把:
      while (Now - Record < deleyTime )
    改为:

    可以连续刷了   但是这个程序不循环了!!1
  • TA的每日心情
    郁闷
    2019-1-9 23:00
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-1-10 22:09 | 显示全部楼层
    顶起来                                       
  • TA的每日心情
    郁闷
    2019-1-9 23:00
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-1-10 22:27 | 显示全部楼层
    求指点啊  
  • TA的每日心情
    郁闷
    2019-1-9 23:00
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-1-11 21:46 | 显示全部楼层
    那位大神来指点一下
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    关于arduino编译问题
    关于arduino编译问题
    编译示例程序老是这个问题,换了电脑都不行
    莫名乱码 —— Arduino+RFID-RC522 读写实验
    莫名乱码 —— Arduino+RF
    目标:想把自己房间门改成感应门锁 器材:Arduino Uno (淘宝七星虫LY-F2)、RFID-RC
    [blinker开发实战2]数据反馈
    [blinker开发实战2]数据反
    [md] ### 添加DIY组件 在编辑模式下,点击按键进入编辑组件页面,可以看到 **按键
    用Arduino控制PS2无线手柄为什么一直连接不上
    用Arduino控制PS2无线手柄
    用Arduino UNO板 连接PS2手柄接收器,为什么指示灯已经显示对接上了,但是打开串口监
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表