我買的接收器是VS1838B
https://github.com/z3t0/Arduino-IRremote
想要做到把接收到的遙控器編碼顯示在LCD上,並且可以控制繼電器
依照底下程式碼把線接好,使用的是內建的library
#include <LiquidCrystal.h>
#include <IRremote.h>
#include <IRremoteInt.h>
LiquidCrystal lcd(11,12,6,5,4,3); //設定LCD需要的腳位
int irReceiverPin = 2; //設定紅外線的接收腳位
int power=7;
IRrecv irrecv(irReceiverPin); // 宣告一個變數儲存接收紅外線訊號
decode_results results; // 宣告一個變數儲存儲存訊號解譯的結果
void setup() {
// put your setup code here, to run once:
lcd.begin(16,2);
lcd.print("hello,world!");
Serial.begin(9600);
irrecv.blink13(true); // 設為true的話,當收到訊號時,腳位13的LED便會閃爍
irrecv.enableIRIn(); // 啟動接收
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.backlight();
pinMode(7,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
lcd.setCursor(0,1);
if (irrecv.decode(&results)) { // 假如有收到紅外線訊號
lcd.clear();
Serial.print("results value is "); // 輸出解碼後的資料
Serial.println(results.value, HEX);
lcd.print(results.value, HEX);
switch (results.value) {
case ;
//digitalWrite(7,HIGHT);
break;
case ;
//digitalWrite(7,LOW);
break;
}
delay(1000);
irrecv.resume(); // 準備接收下一個訊號
}
但是,用上面的libraries卻一直無法正確編譯,應該是說對於同一個紅外線按鈕解譯後的數值不固定,所以去找了一本"Arduino實作入門與應用",用作者所提供的libraies,才成功抓到固定的數值,這樣,我就可以把腳位13連到繼電器,用紅外線做了一個遙控開關,
#include <LiquidCrystal.h>
#include<rc95a.h>
int cir=7; //紅外線腳位
int led=13; //led腳位
LiquidCrystal lcd(11,12,6,5,4,3); //LCD需要的腳位
int c,i,code;
void setup() {
lcd.begin(16,2);
lcd.print("hello,world!");
pinMode(cir,INPUT);
Serial.begin(9600);
}
void loop() {
while(1)
{
lcd.setCursor(0,1);
Serial.println("ir code is : ");
loop:
no_ir=1; ir_ins(cir); if(no_ir==1) goto loop;
rev();
for(i=0; i<4; i++)
{c=(int)com[i]; Serial.print(c);lcd.print(c);}
code=(int)com[3];
switch (code)
{
case 243:
digitalWrite(led, HIGH);
break;
case 233:
digitalWrite(led, LOW);
break;
}
delay(30);
}
}
沒有留言:
張貼留言