OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4465|回复: 23

淘宝上买的红外发射程序帮忙看一下

[复制链接]

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2016-7-28
在线时间
41 小时
发表于 2017-12-5 14:03:13 | 显示全部楼层 |阅读模式
1金钱
总觉得这个程序写的不好啊,特别绕
0.jpg

NECTX.rar

2.97 MB, 下载次数: 426

最佳答案

查看完整内容[请看2#楼]

哎,不看了,看别人的代码好烦,优秀的代码看着还好点,这代码用了这么多游离的变量,真是看不懂写这么多在干嘛。这份代码的核心就是启动了一个定时器,在定时器溢出中断里面翻转GPIO口来实现的红外发射。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

28

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2016-11-22
在线时间
66 小时
发表于 2017-12-5 14:03:14 | 显示全部楼层
Brantim 发表于 2017-12-5 15:06
20元,听别人讲,里面用到了状态机

哎,不看了,看别人的代码好烦,优秀的代码看着还好点,这代码用了这么多游离的变量,真是看不懂写这么多在干嘛。这份代码的核心就是启动了一个定时器,在定时器溢出中断里面翻转GPIO口来实现的红外发射。
回复

使用道具 举报

28

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2016-11-22
在线时间
66 小时
发表于 2017-12-5 14:47:06 | 显示全部楼层
遭了多少钱?他这个程序估计也不是手敲出来的,都是复制粘贴的。凭借以往的工作经验,积累下来的代码,随便复制粘贴一下就可以了。现在基本都这么搞
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2016-7-28
在线时间
41 小时
 楼主| 发表于 2017-12-5 15:06:03 | 显示全部楼层
ARM学员 发表于 2017-12-5 14:47
遭了多少钱?他这个程序估计也不是手敲出来的,都是复制粘贴的。凭借以往的工作经验,积累下来的代码,随便 ...

20元,听别人讲,里面用到了状态机
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2016-7-28
在线时间
41 小时
 楼主| 发表于 2017-12-5 15:07:18 | 显示全部楼层
ARM学员 发表于 2017-12-5 14:47
遭了多少钱?他这个程序估计也不是手敲出来的,都是复制粘贴的。凭借以往的工作经验,积累下来的代码,随便 ...

功能也没能实现,接收器无法解码,一直高电平
回复

使用道具 举报

28

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2016-11-22
在线时间
66 小时
发表于 2017-12-5 15:18:04 | 显示全部楼层
Brantim 发表于 2017-12-5 15:06
20元,听别人讲,里面用到了状态机

刚才在看你在淘宝买的那份代码,原理其实很简单。细节的地方我再帮你看看
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2016-7-28
在线时间
41 小时
 楼主| 发表于 2017-12-5 15:57:52 | 显示全部楼层
ARM学员 发表于 2017-12-5 15:44
哎,不看了,看别人的代码好烦,优秀的代码看着还好点,这代码用了这么多游离的变量,真是看不懂写这么多 ...

一般的做法是PWM波,他这个也没用到stm32上的PWM吧
回复

使用道具 举报

28

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2016-11-22
在线时间
66 小时
发表于 2017-12-5 16:03:30 | 显示全部楼层
Brantim 发表于 2017-12-5 15:57
一般的做法是PWM波,他这个也没用到stm32上的PWM吧

他手动实现的PWM波,并没有用到定时器的PWM功能。就是开了个基本定时器,然后在定时器中断里面翻转GPIO口的电平来实现的
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-12-5 16:57:27 | 显示全部楼层
直接PWM出来,调节占空比
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-12-5 18:17:10 | 显示全部楼层
红外发送程序 还要用钱买.楼主真是豪气呀. 红外中断解码程序20元还差不多.发送程序最多5元钱.
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2016-7-28
在线时间
41 小时
 楼主| 发表于 2017-12-6 10:12:49 | 显示全部楼层
操作系统 发表于 2017-12-5 18:17
红外发送程序 还要用钱买.楼主真是豪气呀. 红外中断解码程序20元还差不多.发送程序最多5元钱.

刚开始捣鼓程序,PWM用的不熟
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2016-7-28
在线时间
41 小时
 楼主| 发表于 2017-12-6 10:13:43 | 显示全部楼层
八度空间 发表于 2017-12-5 16:57
直接PWM出来,调节占空比

嗯,你之前做过这个吗?
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2015-5-20
在线时间
18 小时
发表于 2017-12-6 10:41:05 | 显示全部楼层
免费送一个自动学习,自动发射的遥控程序给你,要不
[mw_shl_code=cpp,true]int main(void)
{         
       
        u8 len=0;
  u8 k;       
            
        u8 usbstatus=0;       
        delay_init();                     //Ñóê±oˉêy3õê¼»ˉ          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //éèÖÃNVICÖD¶Ï·Ö×é2:2λÇàÕ¼óÅÏè¼¶£¬2λÏìó|óÅÏè¼¶
        uart_init(115200);                 //′®¿ú3õê¼»ˉÎa115200
        LED_Init();                                  //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú

        delay_ms(1800);
        USB_Port_Set(0);         //USBÏè¶Ï¿a
        delay_ms(700);
        USB_Port_Set(1);        //USBÔù′Îᬽó
        Set_USBClock();   
        USB_Interrupts_Config();   
        USB_Init();       
        Remote_Init();                        //oìía½óêÕ3õê¼»ˉ       
        TIM3_PWM_Init(1893,0);
        while(1)
        {
                if(usbstatus!=bDeviceState)//USBᬽó×′쬷¢éúá˸ıä.
                {
                        usbstatus=bDeviceState;//¼Ç¼DÂμÄ×′ì¬
                        if(usbstatus==CONFIGURED)
                        {
                               
                                printf("ìáê¾USBᬽó");
                                LED1=0;//DS1áá
                        }else
                        {
                               
                                printf("ìáê¾USB¶Ï¿a");
                                LED1=1;//DS1Ãe
                        }
                }
                if(USB_USART_RX_STA&0x8000)
                {                len=(u8)(USB_USART_RX_STA&0x3fff);//μÃμ½′Ë′νóêÕμ½μÄêy¾Y3¤¶è
                              for(k=0;k<len;k++)
                                {   switch(USB_USART_RX_BUF[k])
                                                                        { case 30: xuexi(0);
                                                                                     break;
                                                                                                         case 31: xuexi(1);
                                                                                     break;
                                                                                                        case 32: xuexi(2);
                                                                                     break;
                                                                                                        case 33: xuexi(3);
                                                                                     break;
                                                                                                         case 34: xuexi(4);
                                                                                     break;
                                                                                                        case 35: xuexi(5);
                                                                                     break;
                                                                                                        case 36: xuexi(6);
                                                                                     break;
                                                                                                         case 37: xuexi(7);
                                                                                     break;
                                                                                                        case 38: xuexi(8);
                                                                                     break;
                                                                                                        case 39: xuexi(9);
                                                                                     break;
                                                                                                         case 40: xuexi(10);
                                                                                     break;
                                                                                                        case 41: xuexi(11);
                                                                                     break;
                                                                                                                case 42: xuexi(12);
                                                                                     break;
                                                                                                                case 43: xuexi(13);
                                                                                     break;
                                                                                          case 56: xuexi(14);
                                                                                     break;
                                                                                                  case 44: xuexi(15);
                                                                                     break;
                                                                                                        case 45: xuexi(16);
                                                                                     break;
                                                                                                  case 46: xuexi(17);
                                                                                     break;       
                                                                    case 47: xuexi(18);
                                                                                     break;
                                      case 48: xuexi(19);
                                                                                     break;       
                                            case 49: xuexi(20);
                                                                                     break;
                                            case 50: xuexi(21);
                                                                                     break;       
                                                  case 51: xuexi(22);
                                                                                     break;
                                case 52: xuexi(23);
                                                                                     break;
                                case 53: xuexi(24);
                                                                                     break;
                                case 54: xuexi(25);
                                                                                     break;
                                case 55: xuexi(26);
                                                                                     break;                                       
                                                                          case 0x01:  STMFLASH_Read(0X08048000,Dv,71);       
                                                                                          fashe();
                              break;                                                                       
                                                                                case 0x02:  STMFLASH_Read(0X08048000+142,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                         case 0x03:  STMFLASH_Read(0X08048000+142*2,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                         case 0x04:  STMFLASH_Read(0X08048000+142*3,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                         case 0x05:  STMFLASH_Read(0X08048000+142*4,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                         case 0x06:  STMFLASH_Read(0X08048000+142*5,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                         case 0x07:  STMFLASH_Read(0X08048000+142*6,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                         case 0x08:  STMFLASH_Read(0X08048000+142*7,Dv,71);       
                                                                                          fashe();
                              break;
                           case 0x09:  STMFLASH_Read(0X08048000+142*8,Dv,71);       
                                                                                          fashe();
                              break;       
                                                                                                                 case 11:  STMFLASH_Read(0X08048000+142*9,Dv,71);       
                                                                                          fashe();
                              break;
                                                                  case 12:  STMFLASH_Read(0X08048000+142*10,Dv,71);       
                                                                                          fashe();
                                                                                                                        break;                                                               
                             case 14:  STMFLASH_Read(0X08048000+142*11,Dv,71);       
                                                                                          fashe();
                              break;       
                              case 15:  STMFLASH_Read(0X08048000+142*12,Dv,71);       
                                                                                          fashe();
                              break;
                             case 17:  STMFLASH_Read(0X08048000+142*13,Dv,71);       
                                                                                          fashe();
                              break;
                                          case 18:  STMFLASH_Read(0X08048800,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                         case 19:  STMFLASH_Read(0X08048800+142,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                         case 20:  STMFLASH_Read(0X08048800+142*2,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                         case 21:  STMFLASH_Read(0X08048800+142*3,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                         case 22:  STMFLASH_Read(0X08048800+142*4,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                         case 23:  STMFLASH_Read(0X08048800+142*5,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                         case 24:  STMFLASH_Read(0X08048800+142*6,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                         case 25:  STMFLASH_Read(0X08048800+142*7,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                         case 26:  STMFLASH_Read(0X08048800+142*8,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                         case 27:  STMFLASH_Read(0X08048800+142*9,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                         case 28:  STMFLASH_Read(0X08048800+142*10,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                         case 29:  STMFLASH_Read(0X08048800+142*11,Dv,71);       
                                                                                          fashe();
                              break;
                                                                                                                        case 57:  STMFLASH_Read(0X08048800+142*12,Dv,71);       
                                                                                          fashe();
                              break;                                                                                               
                                                                         }
                                                               
                                                        }         
                          
                                                USB_USART_RX_STA=0;;                                          
                                                        
                       
                }
        }
}

[/mw_shl_code]
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2015-5-20
在线时间
18 小时
发表于 2017-12-6 10:42:26 | 显示全部楼层
回复

使用道具 举报

4

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2014-2-20
在线时间
27 小时
发表于 2017-12-6 10:43:13 | 显示全部楼层
IO口直接驱动红外发射管??
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2015-5-20
在线时间
18 小时
发表于 2017-12-6 11:06:18 | 显示全部楼层
利用  STM32 USB转COM 虚拟驱动,完成STM和PC通讯,遥控学习原理:利用GPIO口,设为输入状态接收红外遥控输入信号,启动定时器,计算遥控发射和停止时间,计算是否为NEC编码,如果是转化为NEC,如果不是保存原遥控发射和停止时间,并存入STM32 FLASH闪存区,发射时启动 STM32 PWM波,读取STM FLASH闪存区的发射和停止时间控制 pwm发射红外遥控

红外遥控学习发射.zip

6.7 MB, 下载次数: 589

回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2016-7-28
在线时间
41 小时
 楼主| 发表于 2017-12-6 11:15:06 | 显示全部楼层
cv123cv123 发表于 2017-12-6 11:06
利用  STM32 USB转COM 虚拟驱动,完成STM和PC通讯,遥控学习原理:利用GPIO口,设为输入状态接收红外遥控输 ...

非常感谢分享
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2016-7-28
在线时间
41 小时
 楼主| 发表于 2017-12-6 11:25:56 | 显示全部楼层
cv123cv123 发表于 2017-12-6 11:06
利用  STM32 USB转COM 虚拟驱动,完成STM和PC通讯,遥控学习原理:利用GPIO口,设为输入状态接收红外遥控输 ...

额,这不就是战舰开发板实验48USB虚拟串口实验么
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-12-6 14:30:00 | 显示全部楼层
Brantim 发表于 2017-12-6 10:13
嗯,你之前做过这个吗?

N年前做过.
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2016-7-28
在线时间
41 小时
 楼主| 发表于 2017-12-6 15:10:33 | 显示全部楼层

想做个遥控空调的,空调的编码好像有点复杂
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2016-7-28
在线时间
41 小时
 楼主| 发表于 2017-12-6 15:11:41 | 显示全部楼层
沉默的疯狂 发表于 2017-12-6 10:43
IO口直接驱动红外发射管??

我的电路已经加了三极管
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
153
金钱
153
注册时间
2015-5-20
在线时间
18 小时
发表于 2017-12-6 15:15:04 | 显示全部楼层
正确理解和利用原子哥的,USB转COM,PWM,遥控解码,加上自己的代码组合成遥控学习发射程序,电脑上位机是自己开发的,否则买了原子哥的F4开发板已经很久了,如果不发表一个学习成果,会对不起原子哥老师的,向原子哥老师致敬!感谢您引领我们走进STM
的大门,不过现在人工智能很火爆,向原子哥是否能向STM项目里引入人工智能呢?如机器深度学习,语言识别,图像识别的基础原理
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2016-7-28
在线时间
41 小时
 楼主| 发表于 2017-12-6 15:24:31 | 显示全部楼层
cv123cv123 发表于 2017-12-6 15:15
正确理解和利用原子哥的,USB转COM,PWM,遥控解码,加上自己的代码组合成遥控学习发射程序,电脑上位机是 ...

我买的mini开发板
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-12-6 19:47:40 | 显示全部楼层
Brantim 发表于 2017-12-6 15:10
想做个遥控空调的,空调的编码好像有点复杂

红外 遥控器里面.空调遥控 是有点复杂..不同的牌子完全不同的编码方式.
总的来说,,比起其它的任务还是算简单的.加油..
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 23:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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