本文主要是介绍Arduino红外遥控器,控制继电器水泵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们将讨论如何使用Arduino和IRremote库来实现通过红外遥控器控制继电器的开关。通过这个项目,你将学会如何接收和解码红外信号,并根据接收到的信号控制继电器(这里的继电器可以换成其他传感器)的状态。
项目简介
我们将使用Arduino开发板、一个红外接收模块和一个红外遥控器来实现这个项目。当按下遥控器上的特定按钮时,继电器将会打开或关闭。我们将使用最新版本的IRremote库来接收和解码红外信号。
硬件准备
- Arduino开发板(例如Arduino Uno)
- 红外接收模块
- 红外遥控器
- 继电器
- 杜邦线
电路连接
- 将红外接收模块的信号引脚连接到Arduino的数字引脚11。
- 将红外接收模块的VCC和GND分别连接到Arduino的5V和GND。
继电器连接如图所示,信号输入引脚接arduino的7号引脚
软件准备
确保你已经在Arduino IDE中安装了最新版本的IRremote库。你可以通过以下步骤来安装:
- 打开Arduino IDE。
- 进入“工具”菜单,选择“库管理器”。
- 在弹出的窗口中搜索“IRremote”,找到“IRremote并安装。
这是解码遥控器发出的红外信号的代码
#include <IRremote.hpp> // 引入新的IRremote库const int RECV_PIN = 11; // 定义红外接收器引脚
const int LED_PIN = 13; // 定义LED引脚
bool ledState = LOW; // 初始化LED状态为低void setup() {pinMode(LED_PIN, OUTPUT); // 设置LED引脚为输出模式Serial.begin(9600); // 初始化串口通讯,波特率为9600IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // 启动红外解码,并启用LED反馈
}void loop() {if (IrReceiver.decode()) { // 判断是否接收到红外码Serial.print("bits: ");Serial.println(IrReceiver.decodedIRData.rawDataPtr->rawlen); // 打印红外线码元位数Serial.print("IRCode: ");Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); // 串口监视器查看红外解码结果(十六进制)ledState = !ledState; // 切换LED状态digitalWrite(LED_PIN, ledState); // 设置LED引脚电平IrReceiver.resume(); // 在解码一个红外线信号之后,持续接收下一组信号}
}
下面是通过遥控器控制继电器的代码
#include <IRremote.hpp> // 引入新的IRremote库const int RECV_PIN = 11; // 定义红外接收器引脚
const int LED = 7; // 定义LED引脚void setup() {Serial.begin(9600); // 初始化串口通讯,波特率为9600IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK); // 启动红外解码,并启用LED反馈pinMode(LED, OUTPUT); // 设置LED引脚为输出模式
}void loop() {if (IrReceiver.decode()) { // 判断是否接收到红外码unsigned long value = IrReceiver.decodedIRData.decodedRawData; // 获取解码后的红外码switch (value) {case 0xBA45FF00: Serial.println("OPEN"); digitalWrite(7, HIGH); // 打开LEDbreak;case 0xB946FF00: Serial.println("MODE"); digitalWrite(7, LOW); // 关闭LEDbreak;case 0xB847FF00: Serial.println("jingyin"); break;case 0xF30CFF00: Serial.println("1"); break;case 0xE718FF00: Serial.println("2"); break;case 0xA15EFF00: Serial.println("3"); break;case 0xF708FF00: Serial.println("4"); break;case 0xE31CFF00: Serial.println("5"); break;default: Serial.println("Unknown"); break; // 添加默认情况处理}IrReceiver.resume(); // 等待接收下一组信号}
}
这篇关于Arduino红外遥控器,控制继电器水泵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!