Arduino学习笔记 (五) -- 红外接收与解码
实验原料:
1、PC一台
2、Arduino UNO R3 + type-b数据线
3、红外遥控 + 红外接收模块
4、发光led二极管
5、杜邦线若干
6、电阻(用作限流 100R ~ 1K)
模块连接:
红外接收器的signal接在数字引脚11上
GND接控制板的GND
VCC接控制板上+5V
发光二极管正极引脚接在数字引脚4上,
LED负极通过220欧姆电阻回到控制板的GND
效果:
红外遥控器按下按键时,电脑的串口监视器显示按键编码
若按下数字键1,则LED点亮
若按下数字键2,则LED熄灭
下面上代码
#include <IRremote.h> int RECV_PIN = 11;//定义红外接收器的引脚为11 int LED_PIN = 4; //定义发光LED引脚数字4 int a = 0; IRrecv irrecv(RECV_PIN); decode_results results; String jian[17] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "*", "0", "#", "上", "左", "OK", "右", "下" }; String ma[17] = { "16753245", "16736925", "16769565", "16720605", "16712445", "16761405", "16769055", "16754775", "16748655", "16738455", "16750695", "16756815", "16718055", "16716015", "16726215", "16734885", "16730805" }; void setup() { Serial.begin(9600); // 串口波特率 irrecv.enableIRIn(); // 初始化红外接收器 pinMode(LED_PIN, OUTPUT); // 设置发光LED引脚数字4 } String getjian(unsigned long mastr) { String result = ""; for ( int i = 0; i < 17; ++i ) { if (String(mastr) == ma[i]) { result = jian[i]; break; } } return result; } int val = 0 ; void loop() { if (irrecv.decode(&results)) { // Serial.println(results.value); // 输出按键值(未解码) if (results.value != 4294967295) { String zi = getjian(results.value); Serial.println(zi); if (zi == "1") { digitalWrite(LED_PIN, HIGH); //LED点亮 } if (zi == "2") { digitalWrite(LED_PIN, LOW); //LED点亮 } if (zi == "上") { val += 30; if (val >= 1024) { val = 1024; } analogWrite(LED_PIN, val);//val 是 0~255 的整数值,对应电压从 0 到+5V int vvvv = analogRead(LED_PIN); Serial.println(vvvv); // digitalWrite(LED_PIN,HIGH);//LED点亮 } if (zi == "下") { // digitalWrite(LED_PIN,LOW);//LED点亮 val -= 30; if (val <= 1) { val = 1; } analogWrite(LED_PIN, val);//val 是 0~255 的整数值,对应电压从 0 到+5V int vvvv = analogRead(LED_PIN); Serial.println(vvvv); } } irrecv.resume(); // 接收下一个值 } }
备注:
代码需要提前安装IRremote库,用于接收红外
因使用的是数字IO(只能输出高低电平),下一步计划使用模拟IO,通过上下按键来改变电压(PWM占空比)实现LED亮度的控制
任意按键长按时,红外接收的16进制数据为0,可设置逻辑来判断长按的按键,后期可以通过红外来控制遥控车或者机械臂等硬件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律