Arduino 红外遥控密码输入控制舵机、温湿度传感器、电机
目录一、使用的器件二、流程图三、连线图四、实际图五、代码实现六、dht11 和 LiquidCrtstal_l2c 的库一、使用的器件1、红外遥控器、红外接收器2、ULN2003A和直流电机3、dht11温湿度传感器4、蜂鸣器5、舵机6、LCD1603显示屏二、流程图三、连线图 可能有的同学画图的时候找不
·
一、使用的器件
1、红外遥控器、红外接收器
2、ULN2003A和直流电机
3、dht11温湿度传感器
4、蜂鸣器
5、舵机
6、LCD1603显示屏
二、流程图

三、连线图

可能有的同学画图的时候找不到四根引脚的lcd
下载地址:四根引脚lcd.
然后在点这里导入fzpz文件就能用了
四、实际图
(emmm 有点丑 大概就这个样)
五、代码实现
/**
@description Arduino应用工程1
@author weilin
@date 2021/04/24
*/
#include <IRremote.h>
#include <Servo.h>
#include <Wire.h>
#include "dht11.h"
#include "LiquidCrystal_I2C.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define DHT11PIN A0
#define MAX 22
Servo myservo;//舵机对象
int Bee_PIN = 7 ; //蜂鸣器
int pos = 0; //舵机角度
int motor = 6; //步进电机引脚
int RECV_PIN = 11; //定义红外接收模块输出口接arduino数字引脚11
char pwd[8]; //10位密码
char real_pwd[6] = "123456"; //密码
int IF_logon_flag = 0; //登录flag
int pwd_num = 0 ; //密码数组下标
dht11 DHT11; //温湿度对象
IRrecv irrecv(RECV_PIN);
decode_results results;
//Car mp3编码
unsigned long rremote_code[MAX] = {
0xFFA25D, 0xFF629D, 0xFFE21D, //CH- CH CH+
0xFF22DD, 0xFF02FD, 0xFFC23D, //PREV NEXT PLAY
0xFFE01F, 0xFFA857, 0xFF906F, //VOL- VOL+ EQ
0xFF6897, 0xFF9867, 0xFFB04F, // 0 100+ 200+
0xFF30CF, 0xFF18E7, 0xFF7A85, // 1 2 3
0xFF10EF, 0xFF38C7, 0xFF5AA5, // 4 5 6
0xFF42BD, 0xFF4AB5, 0xFF52AD, // 7 8 9
0xFFFFFFFF//长按
};
//Car mp3对应的字符串
String rremote_string[MAX] = {
"CH-", "CH", "CH+",
"PREV", "NEXT", "PLAY/PAUSE",
"VOL-", "VOL+", "EQ",
"0", "100+", "200+",
"1", "2", "3",
"4", "5", "6",
"7", "8", "9",
"longPress"
};
// 解析红外编码并返回对应的字符串
String get_RremoteString(unsigned long code) {
String rremotestring = "";
int i = 0;
for (i = 0; i < MAX - 1; i++) {
if (code == rremote_code[i]) {
break;
}
}
//过滤掉长按
if (i == MAX - 1) return "";
else return rremote_string[i];
}
// 舵机是否开门
int if_opendoor()
{}
void Bee_function(bool i)
{
if (i)
{
digitalWrite(Bee_PIN, HIGH); //sound production
delay(1000);
digitalWrite(Bee_PIN, LOW);
delay(1000);
}
else
{
digitalWrite(Bee_PIN, HIGH); //sound production
delay(500);
digitalWrite(Bee_PIN, LOW);
delay(100);
digitalWrite(Bee_PIN, HIGH); //sound production
delay(500);
digitalWrite(Bee_PIN, LOW);
}
}
void servo_function() //舵机转向功能
{
for (pos = 0; pos < 90; pos += 1)
{
myservo.write(pos);
delay(15);
}
// 180 到 0 旋转舵机,每次延时 15 毫秒
for (pos = 90; pos >= 1; pos -= 1)
{
myservo.write(pos);
delay(15);
}
}
void show_init_lcd() //初始化lcd
{
lcd.clear(); //清空
lcd.setCursor(0, 0); // go to start of 2nd line
lcd.print("Please input!");
lcd.setCursor(0, 1); // go to start of 2nd line
lcd.print("keyword:");
}
void show_humi_lcd() //显示温湿度的lcd
{}
void setup()
{
pinMode(motor, OUTPUT); //步进电机
pinMode(Bee_PIN, OUTPUT); //蜂鸣器为输出
myservo.attach(8); //舵机
Serial.begin(9600);
irrecv.enableIRIn(); //初始化红外遥控
//显示屏
lcd.init();
lcd.backlight();
show_init_lcd();
}
void loop() {
if (irrecv.decode(&results)) {
//打印字符串
String codeString = get_RremoteString(results.value);
if (codeString.length() != 0)
{
if (codeString != "VOL-") //当做ok键
{
if (pwd_num < 8) //密码位数不能超过10
{
pwd[pwd_num++] = (char) codeString[0];
Serial.println(pwd);
lcd.setCursor(8, 1); // go to start of 2nd line
lcd.print(pwd);
}
}
else
{
//进行检验
if (strcmp(pwd, real_pwd) == 0) //密码验证成功
{
Serial.println("登录成功");
pwd_num = 0; //密码位数清零
memset(pwd, 0, 10); //清空密码
Bee_function(1); //蜂鸣器
IF_logon_flag = 1; //登录成功
lcd.clear(); //清空
lcd.setCursor(4, 0);
lcd.print("SUCCESS!");
servo_function(); //舵机
show_init_lcd();
}
else //失败
{
//蜂鸣器叫两声
Serial.println("登录失败");
pwd_num = 0; //密码位数清零
memset(pwd, 0, 8); //清空密码
Bee_function(0); //蜂鸣器
IF_logon_flag = 0; //登录失败
lcd.clear(); //清空
lcd.setCursor(6, 0);
lcd.print("ERROR!");
delay(1000);
show_init_lcd();
}
}
}
irrecv.resume(); // 接收下一个值
}
if (IF_logon_flag == 1) //登录成功就获取温湿度
{
int chk = DHT11.read(DHT11PIN);
lcd.clear();
lcd.setCursor(0, 0); //温度
lcd.print("Tep: ");
lcd.print((float)DHT11.temperature);
lcd.print("'C");
lcd.setCursor(0, 1);
lcd.print("Hum: "); //湿度
lcd.print((float)DHT11.humidity, 2);
lcd.print("%");
if ((float)DHT11.temperature > 25.0) //到达温度的阈值开启步进电机风扇
{
digitalWrite(motor, HIGH); //电机转
}
else
{
digitalWrite(motor, LOW); //不转
}
delay(1000);
}
}
六、dht11 和 LiquidCrtstal_l2c 的库
这两个库文件可以自行下载的,它们要和ino文件放在一个文件夹下,如下:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)