23.红外遥控实验

实验现象

  当按下遥控器上某个按键,串口输出该按键的名称。

理论学习

  本实验使用红外接收头VS1838+红外遥控器。VS1838使用NEC码。

  NEC码格式:

  1.使用38kHz载波频率

  2.引导码间隔是9ms+4.5ms

  3.使用16位客户代码

  4.使用8位数据代码和8位取反的数据代码

 注意:红外接收头上得到信号和下面的波形高低电平相反




程序代码:

#include "InfraredRemote.h"
 
void setup()
{
    Serial.begin(9600);
    pinMode(IR_IN,INPUT_PULLUP);//设置红外接收引脚为输入
    Serial.flush(); //清除串口缓冲器内容函数。
    timer1_init();//定时器初始化
}
void loop()
{  
    remote_decode(); //译码
    Deal_Print();  
}
 
void Deal_Print()
{
    if( adrL_code == 0x45 )
    {
        Serial.println("ON/OFF");          
    }
    else if( adrL_code == 0x46)
    {
        Serial.println("CH");          
    }
    else if( adrL_code == 0x47 )
    {
        Serial.println("MENU");        
    }
    else if( adrL_code == 0x44 )
    {
        Serial.println("TEST");        
    }
    else if( adrL_code == 0x40 )
    {
        Serial.println("+");           
    }
    else if( adrL_code == 0x43 )
    {
        Serial.println("Return");          
    }
    else if( adrL_code == 0x07 )
    {
        Serial.println("Left");        
    }
    else if( adrL_code == 0x15)
    {
        Serial.println("Play");        
    }
    else if( adrL_code == 0x09 )
    {
        Serial.println("Right");           
    }
    else if( adrL_code == 0x16)
    {
        Serial.println("0");           
    }
    else if( adrL_code == 0x19)
    {
        Serial.println("-");           
    }
    else if( adrL_code == 0x0d)
    {
        Serial.println("C");           
    }
    else if( adrL_code == 0x0c)
    {
        Serial.println("1");           
    }
    else if( adrL_code == 0x18 )
    {
        Serial.println("2");           
    }
    else if( adrL_code == 0x5e )
    {
        Serial.println("3");           
    }
    else if(adrL_code == 0x08 )
    {
        Serial.println("4");           
    }
    else if( adrL_code == 0x1c )
    {
        Serial.println("5");           
    }
    else if( adrL_code == 0x5a )
    {
        Serial.println("6");           
    }
    else if( adrL_code == 0x42)
    {
        Serial.println("7");           
    }
    else if( adrL_code == 0x52)
    {
        Serial.println("8");           
    }
    else if( adrL_code == 0x4a)
    {
        Serial.println("9");           
    }
 
    adrL_code = 0x00;
        adrH_code = 0x00;
        ir_code = 0x00;
}




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值