查看: 210|回复: 1

[未解决] 求助为啥板子编译时候出错

[复制链接]

该用户从未签到

发表于 2019-4-15 22:16 | 显示全部楼层 |阅读模式
#include <deprecated.h>
#include <MFRC522.h>
#include <MFRC522Extended.h>
#include <require_cpp11.h>
//蜂鸣器:接到引脚7
//舵机:接到引脚6   棕色:Gnd   黄色:信号线   红色:vcc
//RFIO:    Arduino UNO             RFIO
//                 3.3v            3.3v
//                 Pin9            RST
//                 Gnd             Gnd
//                 Pin12           MISO
//                 Pin11           MOSI
//                 Pin13           SCL
//                 Pin10           SDA
//4*4键盘 从左向右分别是 列1~4 byte rowPins[KEY_ROWS] = { 2,3,4,5};  行1~4  byte colPins[KEY_COLS] = {A0, A1, A2, A3};

#include <Wire.h>                //LCD显示的好像不能用外部供电
#include <LiquidCrystal_I2C.h>  //SDA接PA4   SCL接PA5
#include <SPI.h>      //RFIO 门禁
#include <MFRC522.h>  //RFIO 门禁
#define RST_PIN         9          // RST 门禁
#define SS_PIN          10         // SDA 门禁
MFRC522 mfrc522(SS_PIN, RST_PIN);  // 创建 MFRC522 实例 RFIO   门禁
#include <Servo.h>
Servo myservo;
//从左向右分别是 列1~4   行1~4
#include <Keypad.h>//键盘库
#include <EEPROM.h>//EEPROM库用来保存修改过的密码,掉电后不遗失

#define KEY_ROWS 4 // 按键模组的列数
#define KEY_COLS 4 // 按键模组的行数
// 键盘位置 依照行、列排列的按键字元(二维阵列)
char keymap[KEY_ROWS][KEY_COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte colPins[KEY_COLS] = {A0, A1, A2, A3};     // 按鍵模組,行1~4接腳。
byte rowPins[KEY_ROWS] = { 2,3,4,5}; // 按鍵模組,列1~4接腳。
// 初始化Keypad物件
// 语法:Keypad(makeKeymap(按键字元的二维阵列), 模组列接脚, 模组行接脚, 模组列数, 模组行数)
Keypad myKeypad = Keypad(makeKeymap(keymap), rowPins, colPins, KEY_ROWS, KEY_COLS);

LiquidCrystal_I2C lcd(0x27, 20, 4);

String oldPassword = "";              //保存老密码
String newPassword = "";              //保存输入的修改密码
int addNum = 0;                       //错误计数
String inPut = "";                    //保存输入字符串
String n = "";                        //字符串转整型用的变量
int buzzer=7;                         //设置控制蜂鸣器的数字IO脚
int pos = 0;                           // 储存伺服电机角度信息的变量
unsigned long now;                    //现在时间用于计时
unsigned long before;                 //参考时间用于计时
unsigned long delayTime = 10000;      //锁定时间

void setup()
{
  SPI.begin();      // Init SPI bus
  mfrc522.PCD_Init();   // Init MFRC522
  mfrc522.PCD_DumpVersionToSerial();  // Show details of PCD - MFRC522 Card Reader details
  
  myservo.attach(6);  //对象接在6号引脚
  Serial.begin(9600);
  pinMode(buzzer,OUTPUT);//设置数字IO脚模式,OUTPUT为辒出
  lcd.begin(20,4,4);

  for(int i = 0;i<4;i++)//用来设置初始密码!!!!!!!!!!!!!!
  {
    EEPROM.write(i,4);//将EEPROM中0-3地址写入1,初始默认密码四个一
  }

  //开机从EEPROM中读取密码,四位密码保存在EEPROM0-3地址当中
  for (int i = 0; i < 4; i++)
  {
    oldPassword += EEPROM.read(i);
  }
  
  //串口打印测试信息
  Serial.print("Old Password is : ");
  Serial.println(oldPassword);
  delay(2000);
  lcd.setCursor(0, 0);//1602输出位置,格式列、行
  lcd.print("Please input :");//1602输出
  
}
int i = 6;//'*'号开始位置
void loop()
{
    char key = myKeypad.getKey();
    if (key)      //有按键按下
    {
      inPut += key;//保存输入
      lcd.setCursor(i, 1);//在指定位置输出*号
      lcd.print('*');
      //串口打印测试信息
      Serial.println("inPut is : ");
      Serial.println(inPut);
      Serial.println("onece");
      i++;//后移1602输出*号位置
      if (i > 9)//超过输出位置回归
      {
        i = 6;
      }   
    }
  
  //比较密码
  if (inPut == oldPassword) //密码正确
  {
    addNum = 0;//错误次数清零
    Serial.println("Bingo!");//串口打印测试信息
    lcd.clear();//清屏
    lcd.setCursor(4, 0);//输出位置
    lcd.print("Bingo!");//输出bingo
    delay(1000);//延时1秒
     for (pos = 0; pos <= 180; pos += 1) //  0度到180度  每步增加一度
     {
      myservo.write(pos);              //  告诉伺服电机达到'pos'变量的角度
      Serial.println(pos);
      delay(15);                 //   等待15ms以确保伺服电机可以达到目标角度
    }
    lcd.clear();//清屏
    delay(500);
      inPut = "";//输入字符串清空
        lcd.clear();//LCD清屏
        lcd.setCursor(0, 0);//位置
         lcd.print("Input is :");//输出
        Serial.println("inPut is : ");
  }
  
  //密码错误 的情况:       注意:这个还有另一个重要的功能!!!!!!!!用来连续输入是个数字,也就是四位数的密码。
  else if (inPut.length() == 4 && inPut != oldPassword)
  {
    Serial.println("ERROR");//串口打印测试信息
   
    //LCD组合操作清屏,位置,输出信息
    lcd.clear();
    lcd.setCursor(5, 0);
    lcd.print("ERROR!");
    inPut = "";//清空输入
    addNum++;//错误计数+1
   
    //串口打印测试信息
    Serial.print("addNum is : ");
    Serial.println(addNum);
    delay(1500);
    lcd.clear();
    lcd.setCursor(0, 0);//格式列、行
    lcd.print("Please input :");
  }
  
  if (addNum > 2)//当错到第三次
  {
    //蜂鸣器报警一秒
     tone(7,500,1000);
   //  digitalWrite(buzzer, HIGH);
   //   delay(1000);
   
   
    //LCD组合操作
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Wait for 10s");
   
  
   
    //计时
    before = millis();//参考时间
    now = millis();//当前时间
   
  //串口输出测试信息
    Serial.print("before is : ");
    Serial.println(before);
    Serial.print("now is : ");
    Serial.println(now);
   
   //锁定键盘等待30秒锁定
    while (now - before < delayTime)//当前时间减参考时间小于设定锁定时间
    {
      lcd.setCursor(0, 0);
      lcd.print("Wait for   s");
      lcd.setCursor(9, 0);
      lcd.print((10000 - (now - before)) / 1000);//LCD输出剩余秒数
      now = millis();             //有这个now的值会一直增加,也就是now记录的时间会越来越长,而before的值不再改变了
      Serial.print("n-b= ");
      Serial.println(now - before);
      
       key = myKeypad.getKey();
      if (key)    //如果有按键按下重置时间(重置时间   作用:在等待的时间里有人乱按按键,会将时间拉回到原来倒数的时间)
      {
        before = millis();
        now = millis();
       //串口输出测试信息
        Serial.print("key and before is  ");
        Serial.println(now - before);
      }
    }
   
    addNum = 0;//锁定时间到,错误次数清零
    lcd.clear();
    lcd.setCursor(0, 0);//格式列、行
    lcd.print("Please input :");
  }

//---------RFIO的程序代码 控制------------------------------------------------------------------------------------------------------------------------------
// Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }
//Show UID on serial monitor
Serial.print("UID tag: ");
String content= "";
byte letter;
for(byte i=0;i<mfrc522.uid.size; i++)
{
  Serial.print(mfrc522.uid.uidByte < 0x10 ? " 0 " : " ");
  Serial.print(mfrc522.uid.uidByte,HEX);
  content.concat(String(mfrc522.uid.uidByte < 0x10 ? " 0 " : " "));
  content.concat(String(mfrc522.uid.uidByte,HEX));
  }
   Serial.println();
   Serial.print("Message: ");
   content.toUpperCase();
if(content.substring(1)=="FD 0 D 90 DD")  //change here the UID of the card that you want to give access
{
  lcd.clear();
  Serial.print("ture  ");
  lcd.setCursor(0, 0);//1602输出位置,格式列、行
  lcd.print("Ture :");//1602输出
  // tone(7,500,1000);
     for (pos = 0; pos <= 180; pos += 1) //  0度到180度  每步增加一度
     {
      myservo.write(pos);              //  告诉伺服电机达到'pos'变量的角度
      Serial.println(pos);
      delay(15);                 //   等待15ms以确保伺服电机可以达到目标角度
    }
   
   delay(1000);
   lcd.clear();
   lcd.setCursor(0, 0);//1602输出位置,格式列、行
   lcd.print("Input is :");//输出
   
}
else
  {
    Serial.print("error   ");
    lcd.clear();
  Serial.print("ture  ");
  lcd.setCursor(0, 0);//1602输出位置,格式列、行
  lcd.print("Eeeor: ");//1602输出
    tone(7,500,1000);
    delay(1000);
   lcd.clear();
   lcd.setCursor(0, 0);//1602输出位置,格式列、行
   lcd.print("Input is :");//输出
    }
  
}

  • TA的每日心情
    开心
    2019-6-17 08:54
  • 签到天数: 696 天

    [LV.9]以坛为家II

    发表于 2019-4-16 09:01 | 显示全部楼层
    编译出错 要么没有库 要么很多都是语法问题
    打赏作者鼓励一下!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    设计了一款智能加湿器,出现了一些控制上的问题
    设计了一款智能加湿器,出
    最近在学习blinker,就想着把手头的加湿器改装成智能加湿器,用了一块WiFiduino、一个
    关于Open Nul问题,
    关于Open Nul问题,
    如图所示,驱动安装的时候,没有出现错误(比如安装过程中没有出现系统找不到指定文件
    Arduino模拟USB键盘
    Arduino模拟USB键盘
    [md] ### 模拟键盘输入信息 本示例将演示使用Arduino Leonardo模拟USB键盘输出信息。
    小白求助
    小白求助
    小白刚接触arduino编程基础较差,发现可以使用图形编程软件,想问一下图片上的是什么
    光敏电阻检测环境光实验
    光敏电阻检测环境光实验
    本文节选自《Arduino程序设计基础》 一些简单的电子元件就可以做传感器使用,例如我
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表