網上有關紅外接收的帖子不少,但是關於使用arduino自制紅外發射器的帖子卻很少,經過網上搜索和自己摸索,給大家發個有arduino自制紅外發射器控制led亮滅的例子。關於本例我使用了兩塊arduino板,一塊用於發射,一塊用於接收。
一、紅外發射(開發板一)
1 /* 2 * 發射紅外線訊號 3 * 注意! 紅外線發射器(IR LED)必須接到 pin 3, 不能接其它腳位,頭文件已經定義,所以下面不用設置pin3口的狀態 4 */ 5 #include <IRremote.h> // 引用 IRRemote 函式庫 6 7 const int buttonPin = 4; // 按鍵(pushbutton)接在 pin 4 8 int buttonState = 0; // 按鍵狀態 9 10 IRsend irsend; // 定義 IRsend 物件來發射紅外線訊號 11 12 void setup() 13 { 14 pinMode(buttonPin, INPUT); // 把 buttonPin 設置成 輸入 15 } 16 17 void loop() 18 { 19 // 讀取按鍵狀態 20 buttonState = digitalRead(buttonPin); 21 22 // 檢查按鍵是否被按下 23 // 有的話 buttonState 會是高電平輸出 24 if (buttonState == HIGH) { 25 // 發射紅外線訊號 26 irsend.sendNEC(0x4CB3817E, 32); // 這個編碼即你按的鍵(接pin4)的編碼,可以隨意更改,如果要控制其他設備,只需將此編碼改為相應編碼就行 27 } 28 }
將以上程序燒入開發板一中,發射部分就制作完畢。下面是紅外接收部分。
二、紅外接收(開發板二)
1 //本例來自於紅外接收模塊的IRremote自帶范例 2 //已經作出了修改 3 //改為當有遙控器的按鍵按下時,接在數字引腳4上的發光LED就會點亮,再按一下按鍵,led熄滅 4 /*電路連接 5 *紅外接收器的VOUT接在數字引腳11上,GND接控制板的GND,VCC接控制板上+5V 6 *發光二極管引腳接在數字引腳4上,通過220歐姆電阻回到控制板的GND 7 *效果,當遙控器按下按鍵時,發光二極管就會閃爍,同時電腦的串口會出現按鍵的命令編碼. 8 */ 9 10 11 #include <IRremote.h> 12 13 int RECV_PIN = 11;//定義紅外接收器的引腳為11 14 int LED_PIN=4;//定義發光LED引腳數字4 15 int a=0; 16 IRrecv irrecv(RECV_PIN); 17 18 decode_results results; 19 20 void setup() 21 { 22 Serial.begin(9600); 23 irrecv.enableIRIn(); // 初始化紅外接收器 24 pinMode(LED_PIN,OUTPUT);//設置發光LED引腳數字4 25 } 26 27 void loop() { 28 if (irrecv.decode(&results)) { 29 if(results.value==0x4CB3817E &a==0) //此處的32位值與發射部分發射的值要保持一致 30 { 31 digitalWrite(LED_PIN,HIGH);//LED點亮 32 a=1; 33 } 34 else if(results.value==0x4CB3817E &a==1) 35 { 36 digitalWrite(LED_PIN,LOW);//LED熄滅 37 a=0; 38 } 39 irrecv.resume(); // 接收下一個值 40 } 41 }
將以上部分程序燒入開發板二即完成接收部分制作。
兩塊開發板上電,當按下發射板上按鍵時,led點亮,再次按下發射板上按鍵是,led熄滅。