极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14231|回复: 5

如何减小 IRremote库中sendRaw的发送误差

[复制链接]
发表于 2013-6-23 09:39:48 | 显示全部楼层 |阅读模式
本帖最后由 xinbai 于 2013-6-25 15:27 编辑

http://www.geek-workshop.com/thread-3574-1-1.html中提及
“对于发送,50微秒的单位会有超过10%的误差,因此1us的单位似乎更理想”

我现在就碰到发送误差过大,导致接收端无法识别的情况。
以下是各种测试数据,如何减小发送误差,如何将那个 50us的发送间隔改为1us?


==以下三组数据,接收自Arduino,原始数据与发送数据有很大误差,hash irCode 不正确==
Protocol: Unknown encoding, irCode: 4A1CC17D,  bits: 32
Raw (32): 43204,300,1800,350,700,300,700,300,750,250,800,250,800,250,1850,300,1750,250,800,300,1800,300,700,350,750,250,750,350,1750,300,750,350,
Protocol: Unknown encoding, irCode: 6D5D1DB0,  bits: 32
Raw (32): 45812,350,1750,300,700,300,750,300,750,300,750,250,800,300,1750,350,1750,300,750,250,1850,250,750,300,750,250,850,250,1800,250,800,350,
Protocol: Unknown encoding, irCode: E0CFC3B8,  bits: 32
Raw (32): 42624,300,1800,250,750,350,700,300,750,250,750,350,700,300,1800,250,1850,300,750,250,1800,350,700,250,800,300,750,300,1800,350,700,250,
Protocol: Unknown encoding, irCode: 649CC98,  bits: 32
Raw (32): 59512,350,1750,300,750,250,750,300,750,300,750,250,800,250,1800,350,1750,300,750,250,1850,300,700,300,750,300,800,250,1800,250,800,300,
Protocol: Unknown encoding, irCode: BF87F1F7,  bits: 32
Raw (32): 20690,350,1750,350,700,250,750,350,700,300,750,250,800,300,1800,300,1800,300,700,300,1800,300,700,350,750,250,800,250,1850,250,750,350,
Protocol: Unknown encoding, irCode: F5E3D44,  bits: 32
Raw (32): 16540,350,1700,350,700,250,750,350,700,250,800,300,750,250,1850,300,1750,350,700,350,1750,350,700,300,750,300,750,300,1800,250,800,300,
Protocol: Unknown encoding, irCode: 652B6B44,  bits: 32
Raw (32): 16698,300,1800,300,700,300,750,300,750,250,800,250,800,250,1800,300,1800,300,750,250,1800,350,700,300,750,300,750,350,1750,350,700,300,
Protocol: Unknown encoding, irCode: 652B6B45,  bits: 32
Raw (32): 42412,300,1750,300,750,300,750,300,700,300,750,300,750,300,1800,250,1850,250,750,250,1850,350,650,300,800,300,750,300,1750,350,750,250,

==以下三组数据,接收自Arduino,原始数据与发送数据有细微差异,hash irCode 正确==
Protocol: Unknown encoding, irCode: 6D5D1DB3,  bits: 32
Raw (32): 7626,350,1750,300,700,250,800,300,700,350,700,300,800,300,1750,300,1800,300,750,300,1800,250,750,300,750,250,800,300,1800,300,750,300,


==以下三组数据,接收自遥控器,原始数据有细微差异,hash irCode 相同==
Protocol: Unknown encoding, irCode: 6D5D1DB3,  bits: 32
Raw (32): 64478,300,1750,300,750,300,750,250,750,300,750,250,800,250,1800,300,1800,300,700,300,1800,300,750,250,750,300,750,250,1850,250,750,250,
Protocol: Unknown encoding, irCode: 6D5D1DB3,  bits: 32
Raw (32): 36076,300,1800,250,750,300,750,300,750,250,750,300,750,300,1800,250,1800,300,750,300,1750,300,750,300,750,300,750,250,1800,300,750,300,
Protocol: Unknown encoding, irCode: 6D5D1DB3,  bits: 32
Raw (32): 49328,300,1750,300,750,300,750,300,700,300,750,300,750,300,1750,350,1750,300,750,250,1800,300,750,300,750,250,750,300,1800,300,700,300,

遥控器型号 Sharp LCDTV GA49WJSB

请各位高人指点?
回复

使用道具 举报

发表于 2013-6-23 21:34:13 | 显示全部楼层
本帖最后由 瘦网虫 于 2013-6-23 21:35 编辑

IRremote库里面IRremote.h定义了这个50.


  1. #define USECPERTICK 50  // microseconds per clock interrupt tick
复制代码


你改成1发送试试看。

瞎猜的啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-24 00:50:04 | 显示全部楼层
瘦网虫 发表于 2013-6-23 21:34
IRremote库里面IRremote.h定义了这个50.

谢谢回复,这个值我试过了1 5 25,都不行;//每次改变后,我都重启过Arduino
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-24 13:17:19 | 显示全部楼层
自己顶一下,看IRremote库原文说明,应该是目前已经采用1微秒作为发射间隔了;
//我之前的理解断章取义了

There are two differences between the raw buffers for sending and for receiving. The send buffer values are in microseconds, while the receive buffer values are in 50 microsecond ticks.

回到原问题,发射RawData的误差大,都有哪些可能呢?
//补充我sendRaw 函数用到的数据,跟实际接收到的值差距有点大

250,1800,250,750,250,750,250,750,250,750,250,750,250,1800,250,1800,250,750,250,1800,250,750,250,750,250,750,250,1800,250,750,250,1800
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-24 13:46:35 | 显示全部楼层
根据IRremoteInt.h中的定义

#define SHARP_BIT_MARK 245
#define SHARP_ONE_SPACE 1805
#define SHARP_ZERO_SPACE 795
#define SHARP_GAP 600000
#define SHARP_TOGGLE_MASK 0x3FF
#define SHARP_RPT_SPACE 3000

重新修改 sendRaw对应的数据,改善不大。
245,1805,245,795,245,795,245,795,245,795,245,795,245,1805,245,1805,245,795,245,1805,245,795,245,795,245,795,245,1805,245,795,245
回复 支持 反对

使用道具 举报

发表于 2014-4-12 13:25:32 | 显示全部楼层
xinbai 发表于 2013-6-24 13:46
根据IRremoteInt.h中的定义

#define SHARP_BIT_MARK 245

请问Raw怎么用呢?看了一些资料都没看明白
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-22 15:49 , Processed in 0.054931 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表