查看: 437|回复: 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 | 显示全部楼层
    那位大神来指点一下
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    【项目】基于Arduino Nano的多功能桌面感应垃圾桶
    【项目】基于Arduino Nano
    基于Arduino Nano的多功能桌面感应垃圾桶随着大学生活不断往前迈进,宿舍桌面上的杂物
    智能物联网花盆
    智能物联网花盆
    打坏了一个费时5小时 3D打印的花盆,耗时22小时 下载:Kittenblock软件,安装、运
    呼吸灯实验
    呼吸灯实验
    本文节选自《Arduino程序设计基础》 之前的章节已经介绍了多种方法控制LED,但单是开
    为开发板 Generic ESP8266 Module 编译时出错
    为开发板 Generic ESP8266
    第一次尝试Arduino UNO软串口通信,编译一直通不过,错误信息 “开发板 generic (平
    Arduino Uno 无法上传程序
    Arduino Uno 无法上传程序
    原来可以正常使用的Arduino Uno 板子突然不能上传程序了,硬件驱动正常,TX和RX指示灯
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表