查看: 111|回复: 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-4-19 10:24
  • 签到天数: 646 天

    [LV.9]以坛为家II

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

    本版积分规则

    热门推荐

    步进电机应用场景
    步进电机应用场景
    最近一直在研究控制步进电机。 今天把整合完落实到应用的一个算是控制箱发出来,大家
    Arduino 时钟
    Arduino 时钟
    arduino 时钟 模块:DHT11、DS1302、蜂鸣器、Arduino nano、按键 功能:时钟日期显
    初次尝试ESP8266+Onenet实现数据上传和读取
    初次尝试ESP8266+Onenet实
    1. 引言 最近需要做和物联网相关的小项目,需要将数据传到Onenet,并能够回传One
    求助代码
    求助代码
    舵机SG90 超声波传感器SR04 nano控制板 Trig接D5 echo接D6 超声波传感器信
    求助设计代码
    求助设计代码
    舵机SG90 超声波传感器SR04 nano控制板 按下图焊接,想制作一个感应垃圾桶,有
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表