Arduino教程傳送門🧭🏔🌋🛤🏞🏜
Arduino與紅外遙控握手
-
- 1.0 簡介
- 2.0 實驗材料
- 3.0 實驗步驟
-
-
- 3.1 根據原理圖搭建電路
- 3.2 庫檔案調用:
- 3.3 建立sketch,拷貝如下代碼并進行儲存編譯上傳
- 3.3 實驗現象
-
- 4.0 總結
1.0 簡介
- 紅外遙控器:是一種通過紅外線及時通訊的控制器,适用于那些需要機器裝置狀态調整的控制系統。在車載MP3、燈光裝置、單片機開發闆和遙控車等短距離控制場合中已經得到了普遍應用。本篇通過官方《IRremote》驅動庫讀出按鍵碼值和實作LED燈的亮滅。
- 外形結構:主要是由遙控器由紅外接收及發射電路、信号調理電路、中央控制器8031.程式及資料存儲器、鍵盤及狀态訓示電路組成。
Arduino與紅外遙控握手 -
工作原理:
遙控器由紅外接收及發射電路、信号調理電路、中央控制器程式及資料存儲器、鍵盤及狀态訓示電路組成。
遙控器有兩種狀态:學習狀态和控制狀态。當遙控器處于學習狀态時,使用者每按一個控制鍵,紅外線接收電路就開始接收外來紅外信号,同時将其轉換成電信号,然後經過檢波、整形、放大,再由CPU定時對其采樣,将每個采樣點的二進制資料以8位為一個機關,分别存放到指定的存儲單元中去,供以後對該裝置控制使用。當遙控器處于控制狀态時,使用者每按下一個控制鍵,CPU從指定的存儲單元中讀取一系列的二進制資料,串行輸出(位和位之間的時間間隔等于采樣時的時間間隔)給信号保持電路,同時由調制電路進行信号調制,将調制信号經放大後,由紅外線發射二極管進行發射,進而實作對該鍵對應裝置功能的控制。(本次學習重點控制狀态🤣🤣🤣)
-
紅外遙控器相關參數見下:
紅外遙控距離: 接收範圍8米左右
發射管紅外波長:940nm
晶振頻率:455KHZ
載波頻率:38KHZ
編碼:編碼格式為NEC
尺寸:86406mm
電源:CR2025/1600mAH
2.0 實驗材料
- Arduino Uno R3開發闆
- USB資料線
- 三根公母線
- SG90舵機
- 一台安裝Arduino開發環境的電腦
3.0 實驗步驟
3.1 根據原理圖搭建電路
- 在使用前一定要記得給紅外遙控器上電池,還有紅外遙控器要結合紅外接收子產品使用,它負責将接收紅外遙控器發射過來的資訊并将其解碼成十六進制碼,這樣才能實作既定的通信。(可以使用手機判斷紅外遙控器是否有電)
Arduino與紅外遙控握手 -
将紅外接收子產品與Arduino正确連接配接,其中S連接配接D3,VCC接+5V,GND接GND,并将其固定好;
實驗原理圖分别對應兩個實驗:
Arduino與紅外遙控握手 Arduino與紅外遙控握手
實驗接線圖:
3.2 庫檔案調用:
需要IRremote庫檔案。操作起來:點選Arduino IDE工具選擇管理庫 ,搜尋IRremote選擇IRRemoteControl安裝,如果這個不行,删除後試試其他的
3.3 建立sketch,拷貝如下代碼并進行儲存編譯上傳
代碼1:
#include <IRremote.h>
int RECV_PIN = 11;//定義紅外接收器的引腳為11
IRrecv irrecv(RECV_PIN);
decode_results results;//注意這個資料類型
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // 初始化紅外接收器
}
void loop() {
if (irrecv.decode(&results)) { //注意這裡取解碼結果的方法,傳遞的是變量指針。
Serial.println(results.value,HEX); //以16進制換行輸出接收代碼。注意取值方法【results.value】。
irrecv.resume(); // 給紅外傳送指令,讓其繼續接收下一個值。同315M無線接收一個道理。
}
}
代碼2:
#include <IRremote.h>
long ir_item;
IRrecv irrecv_3(3);
decode_results results_3;
void setup(){
Serial.begin(9600);
pinMode(4, OUTPUT);
irrecv_3.enableIRIn();
}
void loop(){
if (irrecv_3.decode(&results_3)) {
ir_item=results_3.value;
String type="UNKNOWN";
String typelist[14]={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"};
if(results_3.decode_type>=1&&results_3.decode_type<=13){
type=typelist[results_3.decode_type];
}
Serial.print("IR TYPE:"+type+" ");
delay(150);
Serial.print("Receive: ");
Serial.println(ir_item);
if (ir_item == 0xE318261B) {
digitalWrite(4,HIGH);
Serial.println("Light turn on");
}
if (ir_item == 0xEE886D7F) {
digitalWrite(4,LOW);
Serial.println("Light turn off");
}
irrecv_3.resume();
} else {
}
}
MIxly代碼
3.3 實驗現象
- 代碼1: 依次按下按鈕并記錄如下,需要重複實驗确定碼值!!!
Arduino與紅外遙控握手 Arduino與紅外遙控握手 兩種遙控器分别對應的碼值有所差別
-代碼2:
點選CH-使小燈點亮,點選CH+使小燈熄滅,實作短距離即時通訊的效果
紅外遙控與Arduino實作小燈控制
4.0 總結
- 用紅外遙控器與Arduino 通訊,代碼1是直接利用Arduino 第三方IRRemoteControl庫解碼,得到十六進制數,然後重複實驗得到碼值;代碼2是紅外遙控器與Arduino 通訊,點選CH-使小燈點亮,點選CH+使小燈熄滅,實作短距離即時通訊的效果。
- 在以後的博文中我們将學會用arduino常用傳感器和執行器,進而實作對外部世界進行感覺,充分認識這個有機與無機的環境,科學地合理地進行創作和發揮效益,然後為人類社會發展貢獻一點微薄之力。