单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:505|回复: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));
         }
      
      
  
  
   }
  
}

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

Powered by 单片机教程网