arduino蜂鸣器⾳乐代码青花瓷_【开源分享】基于Arduino的智能门锁,赞!【⽹友投。。。
系统描述
题⽬:《arduino密码锁设计》
功能:
1. 可以设置密码,开锁成功
2. 五次输⼊密码,错误报警(蜂鸣器)
3. 液晶显⽰(1602)
4. RFID-RC522射频模块(刷卡直接开门)
使⽤的模块:
继电器
红外遥控(代替矩阵键盘)
RFID-RC522射频模块
LCD1602(i2c)
模块实物图
接线图
LCD1602
LCD1602  IIC -- IIC 红外接收
红外接收 -- 5
继电器
继电器 -- 2
蜂鸣器
蜂鸣器 -- 3
RC522
SDA--10
SCK--13
MOSI--11
MISO--12
其余信号线闲置。
红外遥控信号
源代码
/***************************
* 基于Arduino的智能门锁
* 作者:刘增林
* 时间:2020.12.05
***************************
*/
#include
#include  //1602LCD 驱动引⽤I2C库
#include
#include
#include
#define SS_PIN 10
#define RST_PIN 9
unsigned char i = 0, j = 0, m = 0, n = 0;      //循环变量
unsigned char code[6];          //保存密码
unsigned char code_temp[6];      //保存临时输⼊密码
int rf522_flag = 0;              //门禁卡标志位
int Setpassword_flag = 1;        //设置密码标志位
int Inputpassword_flag = 1;      //输⼊密码标志位
int door_flag = 0;              //门标志位
//管脚定义
const int buzzer = 3;
const int realy = 2;
LiquidCrystal_I2C lcd(0x27,16,2);  //配置LCD地址及⾏列
int RECV_PIN = 5;
IRrecv irrecv(RECV_PIN);  //定义接收引脚为11脚.
decode_results results;    //声明⼀个IRremote库函数独有的变量类型(decode_resultc) MFRC522 rfid(SS_PIN, RST_PIN); //实例化类
// 初始化数组⽤于存储读取到的NUID
byte nuidPICC[4];
void setup() {
// put your setup code here, to run once:
//管脚初始化
最后的哭泣pinMode(realy, OUTPUT);
digitalWrite(realy, HIGH);
pinMode(buzzer, OUTPUT);
digitalWrite(buzzer, HIGH);
SPI.begin(); // 初始化SPI总线
rfid.PCD_Init(); // 初始化 MFRC522
//LCD1602
郭采洁 隐形超人
lcd.init();      //初始化LCD
lcd.backlight(); //设置LCD背光
lcd.setCursor(0,0);            //设置显⽰指针
lcd.print(" Set Clded Lock "); //输出字符到LCD1602上
lcd.setCursor(0,1);            //设置显⽰指针
lcd.print("Password:");        //输出字符到LCD1602上
//红外接收
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
while (Setpassword_flag) //设置密码
{
if (irrecv.decode(&results))  //检查是否接收到红外遥控信号
{
Serial.println(results.value, HEX); //输出16进制接收到的数据指令信息
switch(results.value)//通过这个循环,⽐对
{
case 0xFF9867:
lcd.print("0");delay(500);code[i]=0;i++;break;
case 0XFFA25D:
lcd.print("1");delay(500);code[i]=1;i++;break;
case 0xFF629D:
lcd.print("2");delay(500);code[i]=2;i++;break;
case 0xFFE21D:
lcd.print("3");delay(500);code[i]=3;i++;break;
case 0xFF22DD:
lcd.print("4");delay(500);code[i]=4;i++;break;
case 0xFF02FD:
lcd.print("5");delay(500);code[i]=5;i++;break;
case 0xFFC23D:
lcd.print("6");delay(500);code[i]=6;i++;break;
case 0xFFE01F:
lcd.print("7");delay(500);code[i]=7;i++;break;
case 0xFFA857:
lcd.print("8");delay(500);code[i]=8;i++;break;
蓝精灵啦啦歌
case 0xFF906F:
lcd.print("9");delay(500);code[i]=9;i++;break;
default:
break;
}
if (i == 6)
{
Setpassword_flag = 0; //清除设置密码标志位
Serial.print("Password set successfully\n");
for (j = 0; j 6; j++)
{
Serial.print(code[j]);
}
Serial.println(" ");
digitalWrite(realy, LOW);  //密码设置成功,开门
delay(2000);
digitalWrite(realy, HIGH);
lcd.clear();                  //清屏
lcd.setCursor(0,0);            //设置显⽰指针
lcd.print("===Clded Lock==="); //输出字符到LCD1602上
lcd.setCursor(0,1);            //设置显⽰指针
lcd.print("Password:");        //输出字符到LCD1602上
}
}
}  //密码设置完成
while (Inputpassword_flag)
{
if (irrecv.decode(&results))  //检查是否接收到红外遥控信号
{
Serial.println(results.value, HEX); //输出16进制接收到的数据指令信息
switch(results.value)//通过这个循环,⽐对
{
case 0xFF9867:
男人哭吧不是罪lcd.print("0");delay(500);code_temp[m]=0;m++;break;
case 0XFFA25D:
lcd.print("1");delay(500);code_temp[m]=1;m++;break;
case 0xFF629D:
lcd.print("2");delay(500);code_temp[m]=2;m++;break;
case 0xFFE21D:
lcd.print("3");delay(500);code_temp[m]=3;m++;break;
case 0xFF22DD:
lcd.print("4");delay(500);code_temp[m]=4;m++;break;
case 0xFF02FD:
lcd.print("5");delay(500);code_temp[m]=5;m++;break;
greyson chancecase 0xFFC23D:
lcd.print("6");delay(500);code_temp[m]=6;m++;break;
case 0xFFE01F:
lcd.print("7");delay(500);code_temp[m]=7;m++;break;
case 0xFFA857:
lcd.print("8");delay(500);code_temp[m]=8;m++;break;
case 0xFF906F:
lcd.print("9");delay(500);code_temp[m]=9;m++;break;
default:
break;
}
if (m == 6)
{
m = 0;
if ((code[0] == code_temp[0]) && (code[1] == code_temp[1]) && (code[2] == code_temp[2]) && (code[3] == code_temp[3]) && (code[4] == code_temp[4]) &&        {
digitalWrite(realy, LOW);  //密码设置成功,开门
delay(2000);
digitalWrite(realy, HIGH);
}
else
{
n++;
}
lcd.clear();                  //清屏
lcd.setCursor(0,0);            //设置显⽰指针
lcd.print("===Clded Lock==="); //输出字符到LCD1602上
lcd.setCursor(0,1);            //设置显⽰指针
lcd.print("Password:");        //输出字符到LCD1602上
}
while (n == 5)//错误五次蜂鸣器报警
{
/
/蜂鸣器报警2s
digitalWrite(buzzer, LOW);
click click click}
}