內涵原理圖和源碼,歡迎下載學習。
在使用前一定要記得給紅外遙控器上電池,還有紅外遙控器要結合紅外接收模塊使用,它負責將接收紅外遙控器發射過來的信息并將其解碼成十六進制碼,這樣才能實現既定的通信。
將紅外接收模塊與 Arduino正確連接,其中S 連接D11,VCC 接+5V,GND接 GND,并將其固定好;
與 Arduino 具體的電路原理圖如下:
0.png (31.96 KB, 下載次數: 67)
下載附件
2019-1-19 17:26 上傳
0.png (69.78 KB, 下載次數: 64)
下載附件
2019-1-19 17:28 上傳
Arduino源程序如下:
- /*
- * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
- * An IR detector/demodulator must be connected to the input RECV_PIN.
- * Version 0.1 July, 2009
- * Copyright 2009 Ken Shirriff
- * http://arcfn.com
- */
- #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;
- long all_on = 0x00FF30CF;
- long all_off = 0x00FF18E7;
- 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);
- if (results.value == all_on )
- {
- digitalWrite(LED1, HIGH);
- digitalWrite(LED2, HIGH);
- digitalWrite(LED3, HIGH);
- digitalWrite(LED4, HIGH);
- digitalWrite(LED5, HIGH);
- digitalWrite(LED6, HIGH);
- }
- if (results.value == all_off )
- {
- digitalWrite(LED1, LOW);
- digitalWrite(LED2, LOW);
- digitalWrite(LED3, LOW);
- digitalWrite(LED4, LOW);
- digitalWrite(LED5, LOW);
- digitalWrite(LED6, LOW);
- }
- last = millis();
- irrecv.resume(); // Receive the next value
- }
- }
復制代碼
所有資料51hei提供下載:
紅外接收模塊.rar
(2.04 MB, 下載次數: 34)
2019-1-19 10:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|