• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Arduino編程

      2019-09-10 07:22:44
      電腦報(bào) 2019年6期
      關(guān)鍵詞:低電平高電平遙控器

      一、什么是紅外接收頭?

      紅外遙控器發(fā)出的信號(hào)是一連串的二進(jìn)制脈沖碼。為了使其在無(wú)線傳輸過(guò)程中免受其他紅外信號(hào)的干擾,通常都是先將其調(diào)制在特定的載波頻率上,然后再經(jīng)紅外發(fā)射二極管發(fā)射出去,而紅外線接收裝置則要濾除其他雜波,叧接收該特定頻率的信號(hào)并將其還原成二進(jìn)制脈沖碼,也就是解調(diào)。

      二、工作原理

      內(nèi)置接收管將紅外發(fā)射管發(fā)射出來(lái)癿光信號(hào)轉(zhuǎn)換為微弱的電信號(hào),此信號(hào)經(jīng)由IC內(nèi)部放大器進(jìn)行放大,然后通過(guò)自動(dòng)增益控制、帶通濾波、解調(diào)變、波形整形后還原為遙控器發(fā)射出的原始編碼,經(jīng)由接收頭的信號(hào)輸出腳輸入到電器上的編碼識(shí)別電路。

      三、紅外接收頭的引腳與連線

      紅外接收頭有三個(gè)引腳,用的時(shí)候?qū)OUT接到模擬口,GND接到實(shí)驗(yàn)板上的GND,VCC接到實(shí)驗(yàn)板上的+5V。

      四、紅外遙控實(shí)驗(yàn)

      1.實(shí)驗(yàn)器件

      紅外遙控器:1個(gè)

      紅外接收頭:1個(gè)

      LED燈:6個(gè)

      220Ω電阻:6個(gè)

      多彩面包線:若干

      2.實(shí)驗(yàn)連線

      首先將板子連接好;接著將紅外接收頭按照上述方法接好,將VOUT接到數(shù)字11口引腳,將LED燈通過(guò)電阻接到數(shù)字引腳2,3,4,5,6,7。這樣就完成了電路部分的連接。

      3.實(shí)驗(yàn)原理

      要想對(duì)某一遙控器進(jìn)行解碼必須要了解該遙控器的編碼方式。本產(chǎn)品使用的遙控器的編碼方式為:NEC協(xié)議。下面就介紹一下NEC協(xié)議:

      ·NEC協(xié)議、特點(diǎn):

      (1)8位地址位,8位命令位

      (2)為了可靠性地址位和命令位被傳輸兩次

      (3)脈沖位置調(diào)制

      (4)載波頻率38kHz

      (5)每一位的時(shí)間為1.125ms或2.25ms

      ·邏輯 0和1的定義,按鍵按下立刻松開(kāi)的發(fā)射脈沖:

      顯示了NEC協(xié)議典型的脈沖序列。注意:這首先發(fā)送LSB(最低位)的協(xié)議。在上面的脈沖傳輸?shù)牡刂窞?x59,命令為0x16。一個(gè)消息是由一個(gè)9ms的高電平開(kāi)始,隨后有一個(gè)4.5ms的低電平(返兩段電平組成引尋碼),然后有地址碼和命令碼。地址和命令傳輸兩次。第二次所有位都取反,可用于對(duì)所收到的消息確認(rèn)使用??倐鬏敃r(shí)間是恒定的,因?yàn)槊恳稽c(diǎn)與它取反長(zhǎng)度重復(fù)。如果你不感興趣,你可以忽略這個(gè)可靠性取反,也可以擴(kuò)大地址和命令,以每16位按鍵按下一段時(shí)間才發(fā)射脈沖:

      一個(gè)命令發(fā)送一次,即使在遙控器上的按鍵仍然按下。當(dāng)按鍵一直按下時(shí),第一個(gè)110ms的脈沖與一樣,之后每110ms重復(fù)代碼傳輸一次。這個(gè)重復(fù)代碼是由一個(gè)9ms的高電平脈沖和一個(gè)2.25ms低電平及560μs的高電平組成。

      注意:脈沖波形進(jìn)入一體化接收頭以后,因?yàn)橐惑w化接收頭里要進(jìn)行解碼、信號(hào)放大和整形,故要注意:在沒(méi)有紅外信號(hào)時(shí),其輸出端為高電平,有信號(hào)時(shí)為低電平,故其輸出信號(hào)電平正好和發(fā)射端相反。接收端脈沖大家可以通過(guò)示波器看到,結(jié)合看到的波形理解程序。

      程序代碼

      #include <IRremote.h>

      int RECV_PIN = 11;

      int LED1 = 2;

      int LED2 = 3;

      int LED3 = 4;

      int LED4 = 5;

      int LED5 = 6;

      int LED6 = 7;

      long on1? = 0x00FFA25D;

      long off1 = 0x00FFE01F;

      long on2 = 0x00FF629D;

      long off2 = 0x00FFA857;

      long on3 = 0x00FFE21D;

      long off3 = 0x00FF906F;

      long on4 = 0x00FF22DD;

      long off4 = 0x00FF6897;

      long on5 = 0x00FF02FD;

      long off5 = 0x00FF9867;

      long on6 = 0x00FFC23D;

      long off6 = 0x00FFB047;

      IRrecv irrecv(RECV_PIN);

      decode_results results;

      // Dumps out the decode_results structure.

      // Call this after IRrecv::decode()

      // void * to work around compiler issue

      //void dump(void *v) {

      //? decode_results *results = (decode_results *)v

      void dump(decode_results *results) {

      int count = results->rawlen;

      if (results->decode_type == UNKNOWN)

      {

      Serial.println(“Could not decode message”);

      }

      else

      {

      if (results->decode_type == NEC)

      {

      Serial.print("Decoded NEC:");

      }

      else if (results->decode_type == SONY)

      {

      Serial.print("Decoded SONY:");

      }

      else if (results->decode_type == RC5)

      {

      Serial.print("Decoded RC5:");

      }

      else if (results->decode_type == RC6)

      {

      Serial.print("Decoded RC6:");

      }

      Serial.print(results->value, HEX);

      Serial.print(" (");

      Serial.print(results->bits, DEC);

      Serial.println("bits)");

      }

      Serial.print("Raw (");

      Serial.print(count, DEC);

      Serial.print("):");

      for (int i = 0; i < count; i++)

      {

      if ((i % 2) == 1) {

      Serial.print(results->rawbuf[i]*USECPERTICK, DEC);

      }

      else

      {

      Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);

      }

      Serial.print(" ");

      }

      Serial.println(" ");

      }

      void setup()

      {

      pinMode(RECV_PIN, INPUT);

      pinMode(LED1, OUTPUT);

      pinMode(LED2, OUTPUT);

      pinMode(LED3, OUTPUT);

      pinMode(LED4, OUTPUT);

      pinMode(LED5, OUTPUT);

      pinMode(LED6, OUTPUT);

      pinMode(13, OUTPUT);

      Serial.begin(9600);

      irrecv.enableIRIn(); // Start the receiver

      }

      int on = 0;

      unsigned long last = millis();

      void loop()

      {

      if (irrecv.decode(&results))

      {

      // If it's been at least 1/4 second since the last

      // IR received, toggle the relay

      if (millis() - last > 250)

      {

      on = !on;

      //? ? ? ?digitalWrite(8, on? HIGH : LOW);

      digitalWrite(13, on? HIGH : LOW);

      dump(&results);

      }

      if (results.value == on1 )

      digitalWrite(LED1, HIGH);

      if (results.value == off1 )

      digitalWrite(LED1, LOW);

      if (results.value == on2 )

      digitalWrite(LED2, HIGH);

      if (results.value == off2 )

      digitalWrite(LED2, LOW);

      if (results.value == on3 )

      digitalWrite(LED3, HIGH);

      if (results.value == off3 )

      digitalWrite(LED3, LOW);

      if (results.value == on4 )

      digitalWrite(LED4, HIGH);

      if (results.value == off4 )

      digitalWrite(LED4, LOW);

      if (results.value == on5 )

      digitalWrite(LED5, HIGH);

      if (results.value == off5 )

      digitalWrite(LED5, LOW);

      if (results.value == on6 )

      digitalWrite(LED6, HIGH);

      if (results.value == off6 )

      digitalWrite(LED6, LOW);

      last = millis();

      irrecv.resume(); // Receive the next value

      }

      }

      五、程序功能

      對(duì)遙控器發(fā)射出來(lái)的編碼脈沖進(jìn)行解碼,根據(jù)解碼結(jié)果執(zhí)行相應(yīng)的動(dòng)作。這樣大家就可以用遙控器遙控你的器件了,讓它聽(tīng)你的指揮。

      注意:把 IRremote 文件夾放到 編譯器安裝目錄下的\Arduino\libraries里,不然編譯不過(guò)。例如我的:C:\Program Files\Arduino\libraries。

      猜你喜歡
      低電平高電平遙控器
      數(shù)字電路中“邏輯非”的用法辨析
      一種基于FPGA的PWM防錯(cuò)輸出控制電路
      鐵道車輛高/低電平信號(hào)智能發(fā)生器設(shè)計(jì)
      時(shí)間遙控器
      爸媽有個(gè)“遙控器”
      TS-03C全固態(tài)PDM中波發(fā)射機(jī)開(kāi)關(guān)機(jī)控制電路原理及故障分析
      科技傳播(2019年15期)2019-08-22 08:07:44
      行走的飛行遙控器
      2017款凱迪拉克2.8L/3.0L/3.2L/3.6L車型低電平參考電壓總線電路圖
      DM 50KW中波廣播發(fā)射機(jī)欠推動(dòng)故障分析
      PDM 1kW中波廣播發(fā)射機(jī)保護(hù)電路分析
      镇江市| 福州市| 南江县| 兴文县| 泸西县| 文山县| 道孚县| 轮台县| 巴楚县| 安义县| 莱芜市| 东台市| 清涧县| 九寨沟县| 大埔县| 维西| 乐安县| 德保县| 伊通| 岚皋县| 长乐市| 高阳县| 澄江县| 齐河县| 奉化市| 武清区| 南雄市| 新兴县| 开鲁县| 汶川县| 巴马| 乌海市| 宝坻区| 奈曼旗| 灵石县| 洛阳市| 舞钢市| 日照市| 芦溪县| 建平县| 明星|