坛子里有很多关于红外遥控的教材,具体在使用时还是遇到问题,当然也有提及的,我的红外转发弄了两周,还是在坛友的启发咸菜试验成功的.这里还是再将解决方法复述下供坛友参考.
1、下载IRremote库,将其解压至libraries下,
2、随库有案例,先用IRecvDump,用COM调试口读出遥控器的按钮值;
3、试过好几个遥控器,并不像案例说的那么乐观,我收到的几乎都是“Unknown encoding:”,后随0x******(32bit);
4、按理解8位16进制数应该是NEC码,但是不能遥控成功;
5、在坛友的启发下改用irsend.sendRaw(rawCodes,48,38)语句,转发成功,做法是
IRecvDump中读按钮值中随之有RAW值,括号里表示码长,
将这串值考到程序中,做一个数组如:
unsigned int rawCodes[48]=
{
650, 1900, 600, 1900, 1850, 650, 1900, 600, 650, 1850, 650, 1850, 1900, 600,1900, 650,
600, 1850, 650, 1850, 1900, 650, 1850, 650, 1850, 650, 600, 1900, 1850, 650, 600, 1900,
600, 1900, 600, 1900, 1850, 650, 1850, 650, 1850, 650, 600, 1900, 1850, 650, 600, 28354,
};//rawCodes是数组名,方括号中表示数组长度,将考过来的第一个数从头上换到尾上,同时将数组中可能出现的负号删去,并在数据间隔间用逗号分隔,整理好的数组就是上面这个样;
在loop中调用
irsend.sendRaw(rawCodes,48,38);
delay(100);
irsend.sendRaw语句中的rawCodes就是数组,48是数组的长度,38是红外发射的频率,表示发38Khz频率的码。
用这种方法估计可以胜任任何遥控器。
|