找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 405|回复: 0
打印 上一主题 下一主题
收起左侧

Arduino红外线,无线解码程序样板

[复制链接]
跳转到指定楼层
楼主
ID:328023 发表于 2024-1-20 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
解码原理,利用arduino的微秒函数,通过端口中断(上升源,下降源),得到时间,就可以解码波形

void    subir_decode(void)
{
    volatile static unsigned long timerf,timerf1,timerf2;  
    volatile static unsigned long wcdata_decode,bkdata;
    volatile static u8 wcshift,bit_enable_rx ;
    timerf2 = micros() ;
   
    timerf = 0 ;
    //digitalWrite(LED_BLUE, !digitalRead(LED_BLUE));
    if(timerf2>timerf1)
    {
    timerf = timerf2-timerf1 ;   
    }
    timerf1 = timerf2 ;
    if((timerf>5000)&&(timerf<20000))
    {
    //    digitalWrite(LED_BLUE, !digitalRead(LED_BLUE));
        //Serial.write(timerf/100);
        wcshift = 31 ;
    //    wcdata_decode = 0x00 ;
    }
    else
    {
   

            if(timerf<1800)
            {
                wcdata_decode = wcdata_decode&0xfffffffe ;
               
            }
            else
            {
               
                wcdata_decode = wcdata_decode|0x00000001 ;
            }
            if(wcshift>0)
            {
            wcshift-- ;
            wcdata_decode = wcdata_decode<<1 ;
            }
            else
            {
               
               
                bfirok = 1 ;
                wcirdecode = wcdata_decode ;
               
               
                bkdata = wcdata_decode ;
               
                wcshift = 255 ;
               
            //    Serial.write((wcdata_decode&0x00ff0000)>>16);
            //    Serial.write((wcdata_decode&0x0000ff00)>>8);               
            //    Serial.write((wcdata_decode&0x000000ff));
            }
        
        
   
   
    }
   
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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