随着电视技术的不断发展,电视机已经成为日常娱乐不可或缺的一部分。然而,家中电视遥控器数量却也随之增加,每个品牌、每个型号均需配备不同的遥控器,令人烦恼。若有一款万能遥控器,无需再繁琐修改设置,直接掌控电视,岂不美哉?本文针对此问题提供一份全能万能电视遥控器代码,详细介绍其使用方法以及相关技巧。
基本使用方法
一个简单的万能电视遥控器代码包含了基本的遥控功能。只需将代码复制到Arduino IDE或Raspberry Pi等开发板中,连接红外发射器,将电视型号修改为自己所拥有的电视型号,即可开始使用。
代码框架如下:
#include <IRremote.h>
int RECV_PIN = 11; // 设置接收脚
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long remote_code = 0x07F807F;
//设定代表遥控器按键的代码
unsigned power = 0xE0E040BF;
unsigned source = 0xE0E052AD;
unsigned channel_up = 0xE0E048B7;
unsigned channel_down = 0xE0E008F7;
unsigned volume_up = 0xE0E00EF1;
unsigned volume_down = 0xE0E00EF0;
void setup()
{
serial.begin(9600);
irrecv.enableIRIn(); //启用接收模式
}
void loop()
{
if (irrecv.decode(&results)) {
serial.println(results.value, HEX);
irrecv.resume();
}
}
代码中#include <IRremote.h>为添加红外遥控库,内设unsigned型变量记录各代表遥控器按键的代码。在setup()中启用接收模式,在loop()中检测是否有红外遥控接收。若接收到,则将接收的代码打印并重置接收模式,如此便利程度可见一斑。
修改电视型号
代码只有遥控代码与基本模板,还须将代码中红色部分修改为自己的电视型号,如下:
#include <IRremote.h>
int RECV_PIN = 11; // 设置接收脚
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long remote_code = 0x007F807;
void setup()
{
serial.begin(9600);
irrecv.enableIRIn(); //启用接收模式
irsend.begin();
//下面为修改电视型号,以海信电视为例
irsend.sendNEC(0x4FB1DEB4, 32);
delay(500);
}
只需在void setup()下方的注释处将irsend.sendNEC()中的32修改为自己电视的位数,将0x4FB1DEB4修改为自己电视的红外代码即可。如果不确定电视红外代码,则需要借助专业的红外遥控学习仪进行扫描等操作。修改好后,将该代码上传,连接红外发射器即可控制电视。
扩展功能
除了基本遥控功能,还可以通过添加代码,实现更多功能。例如,支持多个电视遥控码,支持语音控制、支持联网等等。以下代码表示支持两个电视遥控码:
代码框架如下:
#include <IRremote.h>
int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long remote_code = 0x0;
//设定代表遥控器按键的代码
int code_length = 21;
unsigned code1[21] = {0x00,0x08,0x02,0xFF,0x00,0x03,0x01,0x02,0x54,0xAB,
0x00,0xB6,0x92,0x46,0x02,
0x06,0x01,0x01,0x4F,0x21};
unsigned code2[21] = {0x00,0x08,0x02,0xFF,0x00,0x03,0x01,0x02,0x79,0x8F,
0x00,0xB6,0x92,0x46,0x02,
0x06,0x01,0x01,0x4F,0x21};
//定义函数,切换电视电源开关
void toggle_power(bool state){
unsigned power = 0xE0E040BF;
if(state)
irsend.sendNEC(power, 32);
else
irsend.sendNEC(power+1, 32);
}
//定义函数,切换电视信源
void toggle_source(int source_num){
unsigned source = 0xE0E052AD;
if(source_num == 1)
irsend.sendNEC(source, 32);
if(source_num == 2)
irsend.sendNEC(source+1, 32);
}
//定义函数,增减频道、音量
void control(int code_num){
irsend.sendNEC(remote_code+code_num, 32);
}
void setup(){
Serial.begin(9600);
irrecv.enableIRIn();
irsend.begin();
delay(100);
}
void loop(){
if (irrecv.decode(&results)){
Serial.println(results.value, HEX);
irrecv.resume();
}<br />
//切换电源开关(注意开关已经被激活)
if(results.value == 0xE0E08877){
toggle_power(true);
}
if(results.value == 0xE0E008F7){
toggle_power(false);
}
//切换信源
if(results.value == 0xE0E0E01F){
toggle_source(1);
}
if(results.value == 0xE0E0D02F){
toggle_source(2);
}
//键入代码,控制电视
for(int i = 0; i<code_length; i++){
if (results.value == code1[i])
control(i);
if (results.value == code2[i])
control(i);
}
}
具有切换电源开关、切换信源、增减频道、增减音量功能,支持两个电视型号的掌控部分遥控功能。在control()函数中添加对应的遥控代码即可实现更多功能。如需添加遥控功能,则需通过遥控学习仪获取对应代码,再进行调整整合。
总结
本文从基础使用、修改电视型号、扩展功能三部分分别详细介绍了万能电视遥控器代码的使用,能够解决同一遥控器无法控制不同电视的问题。需要注意的是,在修改代码时,代码中涉及到的部分均需仔细核实和修改,以免出现不必要的错误。
文章来自互联网,只做分享使用。发布者:苇叶生活,转转请注明出处:https://www.weiyetrade.com/shyp/18696.html