Arduino 接收NEC红外遥控编码

使用Arduino接收红外遥控编码并打印到串口
IR_PIN 默认为2

/*本程序用来接收NEC红外编码
 * 程序原理:通过判断两次下降沿的周期宽度判断当前bit是逻辑1还是逻辑0
 * 逻辑1  560+1690=2250us  逻辑0 560+560=1120us
 * 接收到的数据是低位在前,保存的bit顺序为 0->7
 * 
 * 
 * 当收到第1个下降沿时认为程序进入等待前导码阶段,即:9ms低+4.5ms高,
 * 所以可在下一个下降沿时判断脉宽是否在13.5ms左右,如果是则标记进入收码阶段,否则返回重新等待新的下降沿
 * 
 * 进入收码阶段后每次下降沿判断脉宽,得到逻辑1或0并写入buf,写满1个字节后转存至全局变量数组中
 * 
 * 接收IO连续高电平100ms以上时认为收码结束,标记结束
 * loop检测到收码结束时打印结果
 * 
 * BH3PXN
 * 2020.05.29
*/

#define IR_PIN 2

#define STEP_FREE 0
#define STEP_WAIT_PRECODE 1
#define STEP_RECV_CODE 2
#define STEP_RECV_OVER 3

unsigned char recvStep = STEP_FREE;
unsigned char irCode[100];
unsigned char idx = 0;
void setup() {
   
  // put your setup code here, to run once:
  pinMode(IR_PIN, INPUT_PULLUP); //开启上拉
  Serial.begin(9600);
}

void loop() {
   
  // put your main code here, to run repeatedly:
  IR_RECV();
  outputIRCODE();

}
void outputIRCODE() {
   
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值