相關(guān)知識
紅外遙控是一種無線、非接觸控制技術(shù),具有抗干擾能力強(qiáng),信息傳輸可靠,功耗低,成本低,易實(shí)現(xiàn)等顯著優(yōu)點(diǎn),被諸多電子設(shè)備特別是家用電器廣泛采用。
組成:紅外遙控器 + 紅外接收器
基本原理:紅外遙控的發(fā)射電路是采用紅外發(fā)光二極管來發(fā)出經(jīng)過調(diào)制的紅外光波;紅外接收電路由紅外接收二極管、三極管或硅光電池組成,它們將紅外發(fā)射器發(fā)射的紅外光轉(zhuǎn)換為相應(yīng)的電信號,再送后置放大器。
發(fā)射部分:通過功率放大調(diào)制后的編碼信號,再經(jīng)由發(fā)射電路向外發(fā)射調(diào)制后的指令編碼。
接收部分:接收到已調(diào)制的編碼信號并進(jìn)行放大解調(diào),還原出對應(yīng)的編碼信號。
電路搭建
所需材料
ArduinoUNO * 1
紅外接收模塊 * 1
紅外遙控器 * 1
紅黃藍(lán)綠LED各一
直流電機(jī) * 1
杜邦線若干
接線方式
接收器引腳定義:
"-"接UNO的"GND"
"S"接UNO的信號端口
中間的引腳接UNO的5V
程序編寫
練習(xí)一:讀取紅外遙控器的鍵值
編程實(shí)現(xiàn)通過串口讀取紅外遙控器各個(gè)鍵位對應(yīng)的鍵值。
圖形化方式:
打開串口監(jiān)視器,按下紅外遙控器上的按鍵,可以在監(jiān)視器上讀取到對應(yīng)的鍵值。正確的鍵值模式為“FF”開頭的6位十六進(jìn)制數(shù)字。
鍵值對應(yīng)列表:
- 代碼方式:
/* 項(xiàng)目名稱:紅外鍵值讀取 * 項(xiàng)目時(shí)間:2022.02.23 * 項(xiàng)目作者:MRX */ #include < IRremote.h > int RECV_PIN = 3; IRrecv irrecv(RECV_PIN);// 設(shè)置紅外接收器的引腳 decode_results results;// 定義results變量為紅外結(jié)果存放位置 void setup() { Serial.begin(9600); Serial.println("Enabling IRin"); irrecv.enableIRIn(); // 啟動紅外解碼 Serial.println("Enabled IRin"); } void loop() { if (irrecv.decode(&results)) {// 解碼成功,把數(shù)據(jù)放入results變量中 Serial.println(results.value, HEX); // 顯示紅外編碼 irrecv.resume(); // 繼續(xù)等待接收下一組信號 } delay(100); }
練習(xí)二:紅外遙控?zé)?/strong>
編程實(shí)現(xiàn)紅外遙控開關(guān)不同顏色的燈。
電路連接:
圖形化方式:
代碼方式:代碼中的0x表示為16進(jìn)制
/* 項(xiàng)目名稱:紅外控制LED
* 項(xiàng)目時(shí)間:2022.02.23
* 項(xiàng)目作者:MRX
*/
#include < IRremote.h >
int RECV_PIN = 3;
int red_Pin = 9;
int green_Pin = 10;
int yellow_Pin = 11;
int blue_Pin = 12;
IRrecv irrecv(RECV_PIN);// 設(shè)置紅外接收器的引腳
decode_results results;// 定義results變量為紅外結(jié)果存放位置
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // 啟動紅外解碼
for(int i = 9;i <= 12;i++){
pinMode(i,OUTPUT);
}
}
void loop() {
if (irrecv.decode(&results)) {// 解碼成功,把數(shù)據(jù)放入results變量中
Serial.println(results.value, HEX); // 顯示紅外編碼
switch(results.value){
case 0xFF6897:
digitalWrite(9,HIGH);
break;
case 0xFF30CF:
digitalWrite(10,HIGH);
break;
case 0xFF18E7:
digitalWrite(11,HIGH);
break;
case 0xFF7A85:
digitalWrite(12,HIGH);
break;
case 0xFF10EF:
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
break;
}
irrecv.resume(); // 繼續(xù)等待接收下一組信號
}
}
switch...case...:
switch的用法是判斷case后面的表達(dá)式和switch后面的表達(dá)式是否相匹配,一旦case匹配,就會順序執(zhí)行后面的程序代碼,而不管后面的case是否匹配,直到遇見break。
-
編碼器
+關(guān)注
關(guān)注
45文章
3751瀏覽量
136642 -
接收器
+關(guān)注
關(guān)注
14文章
2533瀏覽量
73104 -
發(fā)光二極管
+關(guān)注
關(guān)注
13文章
1212瀏覽量
67104 -
紅外遙控器
+關(guān)注
關(guān)注
3文章
133瀏覽量
22005 -
硅光電池
+關(guān)注
關(guān)注
0文章
23瀏覽量
5134
發(fā)布評論請先 登錄
相關(guān)推薦
arduino單片機(jī)的紅外遙控解碼發(fā)送庫文件
紅外遙控設(shè)計(jì)的兩篇文檔
【Landzo C1試用體驗(yàn)】篇五:紅外遙控控制運(yùn)動篇
Arduino開發(fā)實(shí)戰(zhàn)指南 AVR篇
【DFR0100 Arduino入門套件】 Lesson15--紅外接收
基于stm32實(shí)現(xiàn)紅外自發(fā)自收紅外遙控
51單片機(jī)綜合學(xué)習(xí)系統(tǒng)_紅外線遙控篇
Arduino的實(shí)驗(yàn)例程之紅外遙控實(shí)驗(yàn)

使用Arduino解碼任何遙控器的紅外遙控信號

Arduino項(xiàng)目輕松添加紅外遙控器和紅外接收器

使用Arduino Nano R3進(jìn)行紅外遙控的數(shù)字時(shí)鐘

帶Arduino UNO的紅外接收器和遙控器

用Arduino和紅外遙控器制作直流風(fēng)扇速度控制器

評論