迪文科技论坛

 找回密码
 立即注册
搜索
查看: 291|回复: 2

【2024.5.31获奖项目】万能红外控制器

[复制链接]

567

主题

167

回帖

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11954
发表于 2024-6-12 15:21:14 | 显示全部楼层 |阅读模式
【开源】万能红外控制器

和大家分享一个万能红外控制器,通过红外模块可以学习任何红外码,这样就可以控制任何需要用红外控制的机器,比如空调、电视机、投影仪、功放机等。这里做了一个空调的控制方案,采用T5L串口4与红外模块进行通讯,大家有需要可以自己去拓展。

效果图视频如下:





  1. <font face="宋体">代码如下:

  2.        INIT_CPU();
  3.        T2_Init();
  4.        UART4_Init();

  5.        EA=1;

  6. void Process(void)
  7. {
  8.        OneMsHandle();
  9.        TenMsHandle();
  10. }

  11. bool uartHandle(u8 *Tdata,u16 len)
  12. {
  13.         u8   writedata[2]={0,0};
  14.         u8   PressKeyI[]  ="完成              ";
  15.         u8   PreMacClose[]="请再按下关机键     ";

  16.         if(!ReadYaoKongOper)
  17.                 return false;

  18.         if(Tdata[0]!=0x68)
  19.                 return false;

  20.         switch(Tdata[1])
  21.         {
  22.                 case 8://正常应答,可以不管

  23.                 break;

  24.                 case 0X0A://正常应答,可以不管
  25. //                default://返回已经弄好的学习码
  26.                         memset(&IR_CmdPack,0,sizeof(IR_CmdPack));

  27.                         IR_CmdPack.Tok=0x5a;
  28.                         IR_CmdPack.len=len;
  29.                         memcpy(IR_CmdPack.cmddata,Tdata,len);

  30.                         Write_Dgusii_Vp(0x5000,(u8*)&IR_CmdPack,sizeof(IR_CmdPack_s)/2);
  31.                         T5L_Flash(WRITE_MOD,0x5000,0x800+2048*(ReadYaoKongOper-1),sizeof(IR_CmdPack_s)/2);
  32.                        
  33.                         if(ReadYaoKongOper==1)
  34.                         {
  35.                                 Write_Dgusii_Vp(0x2000,PreMacClose,strlen(PreMacClose)/2);
  36.                                 SendLearnCodeId(7);
  37.                                 ReadYaoKongOper=7;
  38.                         }
  39.                         else
  40.                         {
  41.                                 ReadYaoKongOper=0;//操作完成
  42.                                 Write_Dgusii_Vp(0x1200,writedata,1);//写显示logo
  43.                                 Write_Dgusii_Vp(0x2000,PressKeyI,strlen(PressKeyI)/2);
  44.                         }

  45. //                        UART4_SendStr(Tdata,len);
  46.                 break;
  47.         }

  48.         return true;
  49. }


  50. void RecordPageKeyPress(void)
  51. {
  52. #if 1
  53.         u8 TouchKey[2]={0,0};
  54.         u8   writedata[2]={0,0};
  55. //        u8   learnCode[]={0x68 ,0x08 ,0x00, 0xFF, 0x10 ,0x00 ,0x0F, 0x16};
  56.         u8   PressKeyI[]="请按下遥控按键";
  57.         u8   PreMachStart[]="请按下遥控开机键";

  58.         Read_Dgusii_Vp(0x1210,TouchKey,1);
  59.         if(TouchKey[1]==0)
  60.                 return;

  61.         if(!ReadYaoKongOper && TouchKey[1]<7)
  62.         {        //只有未学习的时候,操作学习码
  63.                 SendLearnCodeId(TouchKey[1]);
  64.                 if(TouchKey[1]<=8)
  65.                         writedata[1]=1<<(TouchKey[1]-1);
  66.                 Write_Dgusii_Vp(0x1200,writedata,1);//写显示logo
  67.                 ReadYaoKongOper=TouchKey[1];

  68.                 if(ReadYaoKongOper!=1)
  69.                         Write_Dgusii_Vp(0x2000,PressKeyI,strlen(PressKeyI)/2);
  70.                 else
  71.                         Write_Dgusii_Vp(0x2000,PreMachStart,strlen(PreMachStart)/2);
  72.         }
  73.         TouchKey[1]=0;
  74.         Write_Dgusii_Vp(0x1210,TouchKey,1);//关闭触摸按键
  75. #endif
  76. }



  77. void CtrPageKeyPress(void)
  78. {
  79.         u8 TouchKey[2]={0,0};
  80.         u8 sendcmd[]={0x68 ,0x08 ,0x00 ,0xFF ,0x12, 0x00 ,0x11, 0x16};
  81.         u8   MachStart[]="已开机";
  82.         u8   MachClose[]="已关机";

  83.         Read_Dgusii_Vp(0x1300,TouchKey,1);
  84.         if(TouchKey[1]==0)
  85.                 return;
  86. //        printf("CtrPageKeyPress\r\n");
  87.         if(TouchKey[1]<7)
  88.         {
  89.                 memset(&IR_CmdPack,0,sizeof(IR_CmdPack));
  90. #if 0
  91.                 T5L_Flash(READ_MOD,0x5000,0x800+2048*(TouchKey[1]-1),sizeof(IR_CmdPack_s)/2);
  92.                 Read_Dgusii_Vp(0x5000,(u8*)&IR_CmdPack,sizeof(IR_CmdPack_s)/2);

  93.                 if(IR_CmdPack.Tok==0x5a)
  94.                         UART4_SendStr(IR_CmdPack.cmddata,IR_CmdPack.len);
  95. #else

  96.                 if(TouchKey[1]!=1)
  97.                 {
  98.                         sendcmd[5]=TouchKey[1]-1;
  99.                         sendcmd[6]=sendcmd[6]+sendcmd[5];
  100.                 }
  101.                 else
  102.                 {
  103.                         if(MachineST)
  104.                         {
  105.                                 MachineST=0;
  106.                                 TouchKey[1]=7;
  107.                                 sendcmd[5]=TouchKey[1]-1;
  108.                                 sendcmd[6]=sendcmd[6]+sendcmd[5];
  109.                                 Write_Dgusii_Vp(0x2300,MachClose,strlen(MachClose)/2);
  110.                         }
  111.                         else
  112.                         {
  113.                                 MachineST=1;

  114.                                 sendcmd[5]=TouchKey[1]-1;
  115.                                 sendcmd[6]=sendcmd[6]+sendcmd[5];
  116.                                 Write_Dgusii_Vp(0x2300,MachStart,strlen(MachStart)/2);
  117.                         }
  118.                 }

  119.                 UART4_SendStr(sendcmd,sizeof(sendcmd));
  120. #endif
  121. //                printf("IR_CmdPack.Tok:%d",IR_CmdPack.Tok);
  122. //                UART4_SendStr(&IR_CmdPack,10);
  123.         }

  124.         TouchKey[1]=0;
  125.         Write_Dgusii_Vp(0x1300,TouchKey,1);//关闭触摸按键      
  126. }</font>
复制代码

备注说明:如需源码,请参考此链接:http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=10416&_dsign=c58dffae






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0

主题

57

回帖

719

积分

高级会员

Rank: 4

积分
719
QQ
发表于 2024-6-24 11:18:22 | 显示全部楼层
回复

使用道具 举报

0

主题

452

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
11017
发表于 2024-6-24 11:32:29 | 显示全部楼层
可以参考如下链接:
【开源】万能红外控制器
http://inforum.dwin.com.cn:20080 ... 6&fromuid=14580
(出处: 迪文科技论坛)
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-21 23:09 , Processed in 0.080574 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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