久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6097|回復: 3
收起左側

Arduino紅外遙控解碼

[復制鏈接]
ID:372242 發表于 2018-7-16 00:58 | 顯示全部樓層 |閱讀模式
對遙控器發射出來的編碼脈沖進行解碼,根據解碼結果執行相應的動作。返樣大家就可以用遙控器遙控你的器件了,讓它聽你的指揮。
0.png

把 IRremote 文件夾放到 編譯器安裝目錄下的\Arduino\libraries里。
例如我的:C:\Program Files\Arduino\libraries


Arduino源程序如下:
  1. #include <IRremote.h>
  2. int RECV_PIN = 11;
  3. int LED1 = 2;
  4. int LED2 = 3;
  5. int LED3 = 4;
  6. int LED4 = 5;
  7. int LED5 = 6;
  8. int LED6 = 7;
  9. long on1  = 0x00FFA25D;
  10. long off1 = 0x00FFE01F;
  11. long on2 = 0x00FF629D;
  12. long off2 = 0x00FFA857;
  13. long on3 = 0x00FFE21D;
  14. long off3 = 0x00FF906F;
  15. long on4 = 0x00FF22DD;
  16. long off4 = 0x00FF6897;
  17. long on5 = 0x00FF02FD;
  18. long off5 = 0x00FF9867;
  19. long on6 = 0x00FFC23D;
  20. long off6 = 0x00FFB047;
  21. IRrecv irrecv(RECV_PIN);
  22. decode_results results;
  23. // Dumps out the decode_results structure.
  24. // Call this after IRrecv::decode()
  25. // void * to work around compiler issue
  26. //void dump(void *v) {
  27. //  decode_results *results = (decode_results *)v
  28. void dump(decode_results *results) {
  29.   int count = results->rawlen;
  30.   if (results->decode_type == UNKNOWN)
  31.     {
  32.      Serial.println("Could not decode message");
  33.     }
  34.   else
  35.    {
  36.     if (results->decode_type == NEC)
  37.       {
  38.        Serial.print("Decoded NEC: ");
  39.       }
  40.     else if (results->decode_type == SONY)
  41.       {
  42.        Serial.print("Decoded SONY: ");
  43.       }
  44.     else if (results->decode_type == RC5)
  45.       {
  46.        Serial.print("Decoded RC5: ");
  47.       }
  48.     else if (results->decode_type == RC6)
  49.       {
  50.        Serial.print("Decoded RC6: ");
  51.       }
  52.      Serial.print(results->value, HEX);
  53.      Serial.print(" (");
  54.      Serial.print(results->bits, DEC);
  55.      Serial.println(" bits)");
  56.    }
  57.      Serial.print("Raw (");
  58.      Serial.print(count, DEC);
  59.      Serial.print("): ");

  60.   for (int i = 0; i < count; i++)
  61.      {
  62.       if ((i % 2) == 1) {
  63.       Serial.print(results->rawbuf[i]*USECPERTICK, DEC);
  64.      }
  65.     else  
  66.      {
  67.       Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);
  68.      }
  69.     Serial.print(" ");
  70.      }
  71.       Serial.println("");
  72.      }

  73. void setup()
  74. {
  75.   pinMode(RECV_PIN, INPUT);   
  76.   pinMode(LED1, OUTPUT);
  77.   pinMode(LED2, OUTPUT);
  78.   pinMode(LED3, OUTPUT);
  79.   pinMode(LED4, OUTPUT);
  80.   pinMode(LED5, OUTPUT);
  81.   pinMode(LED6, OUTPUT);  
  82.   pinMode(13, OUTPUT);
  83.   Serial.begin(9600);
  84.   
  85.   irrecv.enableIRIn(); // Start the receiver
  86. }

  87. int on = 0;
  88. unsigned long last = millis();

  89. void loop()
  90. {
  91.   if (irrecv.decode(&results))
  92.    {
  93.     // If it's been at least 1/4 second since the last
  94.     // IR received, toggle the relay
  95.     if (millis() - last > 250)
  96.       {
  97.        on = !on;
  98. //       digitalWrite(8, on ? HIGH : LOW);
  99.        digitalWrite(13, on ? HIGH : LOW);
  100.        dump(&results);
  101.       }
  102.     if (results.value == on1 )
  103.        digitalWrite(LED1, HIGH);
  104.     if (results.value == off1 )
  105.        digitalWrite(LED1, LOW);
  106.     if (results.value == on2 )
  107.        digitalWrite(LED2, HIGH);
  108.     if (results.value == off2 )
  109.        digitalWrite(LED2, LOW);
  110.     if (results.value == on3 )
  111.        digitalWrite(LED3, HIGH);
  112.     if (results.value == off3 )
  113.        digitalWrite(LED3, LOW);
  114.     if (results.value == on4 )
  115.        digitalWrite(LED4, HIGH);
  116.     if (results.value == off4 )
  117.        digitalWrite(LED4, LOW);
  118.     if (results.value == on5 )
  119.        digitalWrite(LED5, HIGH);
  120.     if (results.value == off5 )
  121.        digitalWrite(LED5, LOW);
  122.     if (results.value == on6 )
  123.        digitalWrite(LED6, HIGH);
  124.     if (results.value == off6 )
  125.        digitalWrite(LED6, LOW);        
  126.     last = millis();      
  127.     irrecv.resume(); // Receive the next value
  128.   }
  129. }
復制代碼

所有資料51hei提供下載:
20.紅外遙控器解碼.rar (575.72 KB, 下載次數: 37)
回復

使用道具 舉報

ID:275311 發表于 2019-1-29 22:26 | 顯示全部樓層
有指定什么板嗎?
回復

使用道具 舉報

ID:275311 發表于 2019-1-29 22:32 | 顯示全部樓層
程序有沒有指定什么板嗎?
能和接收代碼寫在一起嗎?
回復

使用道具 舉報

ID:807182 發表于 2020-7-24 16:23 | 顯示全部樓層
nano和uno都可以
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级片免费网站 | 中文字幕一区二区三区四区不卡 | 妞干网视频 | 国内自拍第一页 | 久久久久久久久久久一区二区 | 影视先锋av资源噜噜 | 一级黄a| 成年免费在线观看 | 一区二区国产精品 | 国产精品呻吟久久av凹凸 | 免费观看国产视频在线 | 亚洲不卡在线观看 | 国产一区二区欧美 | 国产精品污污视频 | a级片在线观看 | 久在线视频 | 狠狠爱综合网 | 日韩一区二区三区在线视频 | 日韩欧美在线视频一区 | 欧美激情亚洲激情 | 日韩一区在线观看视频 | 爱操av| 国产精品成av人在线视午夜片 | 男女免费在线观看视频 | 色就干| 污视频在线免费观看 | 欧美中文在线 | 日日操夜夜摸 | 亚洲精品自在在线观看 | 春色av| 免费看a| 亚洲欧美一区二区三区1000 | 一区日韩 | 亚洲国产一区二区三区在线观看 | 国产精品一码二码三码在线 | 精品国产一区久久 | 欧美综合一区二区三区 | 香蕉一区 | 亚洲高清电影 | 欧美在线一区二区三区 | 日韩不卡一二区 |