1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          自制一個空調遙控器

          來源:互聯網轉載 時間:2024-01-29 08:33:05

          我們家里的空調、電視等,它們的遙控器都是通過紅外信號來控制的。其實,我們可以自己用紅外發射模塊來做一個遙控器。

          關于紅外的知識,大家可以參考我之前的文章:基于紅外傳輸的多點溫度采集系統,這里就不再贅述了。

          要自己實現紅外遙控器的功能,思路其實很簡單,首先,我們需要知道原來遙控器發射的信號是怎么樣的,然后我們只要用紅外發射模塊發射一個一模一樣的信號就行了。

          實驗器材準備:

          紅外接收模塊、紅外發射模塊、邏輯分析儀。

          一、獲取遙控器的波形

          我們使用紅外接收模塊,連上邏輯分析儀,然后使用空調遙控器對著紅外接收模塊發射信號,這時邏輯分析儀就采集到了紅外信號。這一部分不需要什么代碼。

          這是我用邏輯分析儀采集到格力空調按下“打開”按鈕時的波形。

          分析一下波形,可以知道,先是有一段約9ms的低電平,然后是4.5ms的高電平,再是一段0 1構成的序列,中間是20.5ms的高電平,再經過一段序列結束。

          那些序列就是真正的信號,里面有控制空調的相關信息,當然,不同的空調肯定是不一樣的,這是廠家定義的。

          二、用單片機產生紅外信號

          知道了遙控器發射的波形,我們不需要去理解它是什么含義,只要照著來發射一段相同的波形,就能實現功能。

          這里就是要稍微注意一下紅外信號的特點,這在我之前的文章里有詳細講過,這里再說一下:

          對于紅外信號來說,當你發射一段脈沖時(脈沖頻率通常是38khz),紅外接收端收到的是低電平,否則,收到的是高電平。

          也就是說,你如果希望接收端收到的是低電平,你不是要發射低電平,而是發射一段脈沖。比如上面最開始是9ms的低電平,那么你需要發射一段持續9ms的脈沖。

          還有就是邏輯0是一段低電平加上一段不長的高電平,邏輯1是一段低電平加上一段較長的高電平。在這里,0是0.62ms低電平+0.56ms高電平,1是0.65ms低電平+1.7ms高電平。

          首先我們把上面的序列保存在數組里面,因為中間有一段較長的高電平時間,所以把它分成兩段來保存。

          char open_1[]={1,0,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,0,0};char open_2[]={1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1};char close_1[]={1,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,0,0};char close_2[]={1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0};

          然后我們把發送邏輯1或者邏輯0封裝成函數

          //發送紅外格式的1或者0。1:0.65ms高電平+1.67ms低電平   0:0.56ms低電平+0.55ms高電平void sendData(int n){  if(n==0)  {    endcount=t(650-100);           //理論計算與實際有偏差,需要進行一定的修正    flag=1;         //表示需要發送低電平,體現為一段脈沖    count=0;    while(count<endcount);    endcount=t(550);    flag=0;    count=0;    while(count<endcount);  }  else{    endcount=t(650-70);    flag=1;         //表示需要發送低電平,體現為一段脈沖    count=0;    while(count<endcount);    endcount=t(1600);    flag=0;    count=0;    while(count<endcount);  }}

          把發送一段長時間的高電平或者低電平封裝成函數

          //發送普通的電平,電平1或者電平0,第二個參數是由上面的宏定義得到void sendUsrLevel(int level,int t){  endcount=t;  count=0;  if(level==0)  {    flag=1;  }  else{    flag=0;  }  while(count<endcount);}

          最后調用上面的函數把控制空調的信號發射出去

          //控制空調的開或者關,0:關閉空調,1:開啟空調void ControlAirConditioner(int cmd){  char len=0;  sendUsrLevel(0,t(9000-600));    //理論計算與實際有偏差,需要進行一定的修正  sendUsrLevel(1,t(4500-350));  if(cmd==0)   //關閉空調  {    len=sizeof(open_1)/sizeof(open_1[0]);    for(int i=0;i<len;i++)     //發送第一段數據    {      sendData(open_1[i]);    }    sendUsrLevel(1,t(20600-2000));    len=sizeof(open_2)/sizeof(open_2[0]);    for(int i=0;i<len;i++)     //發送第二段數據    {      sendData(open_2[i]);    }  }  else{         //打開空調    len=sizeof(close_1)/sizeof(close_1[0]);    for(int i=0;i<len;i++)     //發送第一段數據    {      sendData(close_1[i]);    }    sendUsrLevel(1,t(20600-2000));    len=sizeof(close_2)/sizeof(close_2[0]);    for(int i=0;i<len;i++)     //發送第一段數據    {      sendData(close_2[i]);    }  }}

          在main函數中進行調用,通過按鍵來控制空調的開或者關

          int main(){  u8 i,ret=0;  count = 0;  flag = 0;  OP = 0;  IR_OUT = 1;  SysTick_Init(72);  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中斷優先級分組 分2組  LED_Init();  KEY_Init();  TIM4_Init(13,72-1);  //定時13us    while(1)  {    i++;    if(i%20==0)    {      led1=!led1;    }//    delay_ms(1000);          ret=KEY_Scan(0);    if(ret==KEY_LEFT)    {      ControlAirConditioner(1);      //開空調//      sendUsrLevel(0,t(9000));//      sendUsrLevel(1,t(4500));    }    if(ret==KEY_RIGHT)    {      ControlAirConditioner(0);       //關空調    }  }}

          經過實際測試,確實可以控制我們的空調。

          總的來說,思路比較簡單,就是捕獲遙控器的信號,這個作為標準信號,然后使用紅外發射模塊發射一個和他一樣的信號,另外就是這個需要使用邏輯分析儀去好好分析你實際產生的波形和標準波形的偏差,理論計算與實際難免有誤差。

          標簽:自制空調-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          沈陽京哈高速算沈陽繞城高速嗎?準確的說,京哈高速全程1209公里。路線:北京-唐山-秦皇島-葫蘆島-錦州-盤錦-沈陽-鐵嶺-四平-長春-哈爾濱。沈陽繞城高速是京哈高速的立交。如果你想去哈爾濱,你應該走北環路。沈陽向西到鐵嶺通遼,在王家溝換乘鐵嶺京哈高速。沈陽繞城高速多少邁?沈陽繞城高速大部分路段限速120公里,部分路段限速100公里,少數路段限速80公里。沈陽繞城高速一般是指沈陽的三環路。是國家批...

          如何升級BOOTCAMP?訓練營遵循您的Mac操作系統,而不是單獨升級。解決方案:bootcamp 3.0與windows不是很兼容,所以鼠標不能多點觸控,另外,聲卡和顯卡不是很兼容,導致分辨率低,沒有聲音。在windows下運行Apple update(應該在開頭)將bootcamp更新為最新版本。更新并重新啟動后,設置分辨率,設置bootcamp的第一個分區(所選分區將在引導后首先啟動),設置...

          北京有幾個萬達廣場?北京有7個萬達廣場,萬達廣場是由全球商業地產行業龍頭企業萬達集團投資建設的龐大城市綜合體。截至2019年11月29日,萬達集團已在30個省、市、區的188個城市開設300家萬達廣場。所持有的物業規模全球最大,所建的地方往往成為當地的標志性建筑。萬達廣場包括大型商業中心、城市步行街、五星級酒店、寫字樓、公寓等。集購物、餐飲、文化、娛樂等功能于一體,形成獨立的大型商圈。北京有幾個萬...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>