找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1309|回復: 0
收起左側(cè)

Arduino紅外線,無線解碼程序樣板

[復制鏈接]
ID:328023 發(fā)表于 2024-1-20 11:19 | 顯示全部樓層 |閱讀模式
解碼原理,利用arduino的微秒函數(shù),通過端口中斷(上升源,下降源),得到時間,就可以解碼波形

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));
            }
        
        
   
   
    }
   
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表