23.红外遥控实验

来源:互联网 发布:最牛的口爆经历知乎 编辑:程序博客网 时间:2024/04/30 02:46

实验现象

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

理论学习

  本实验使用红外接收头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;}




0 0
原创粉丝点击