Bài trước: Điều khiển cửa cuốn tự động bằng cảm biến mưa
1. Giới thiệu về Module IR 1838
Module IR 1838 có ba chân theo thứ tự là (-) (+) (Signal) như hình được dùng để thu nhận tín hiệu hồng ngoại từ các nguồn phát 38khz như remote,.... Thông thường chân (+) được nối với chân 5V trong Arduino, chân (-) nối với GND và chân (S) nối với chân digital.
Để điều khiển IR1838 chúng ta cần cài đặt thư viện IRRemote (Download tại đây) .
2. Sơ đồ kết nối với Arduino.
Trong sơ đồ trên IR kết nối với Arduino như sau:3. Code
a. Trước hết chúng ta cần đoạn code để đọc các giá trị nút nhấn trên một Remote cụ thể để từ các giá trị đó chúng ta xử lý theo ý đò của mình.
Đoạn code sau đây sẽ cho phép đọc và in ra Serial giá trị một nút nhân trên Remote.
#include<IRremote.h> Khai báo thư viện IR
const int chanRemote=8; //Chân IR nối với chân 8
IRrecv irrecv(chanRemote); //khai báo
decode_results results; //Khai báo biến nhận giá trị trả về
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
irrecv.enableIRIn(); //Cho phép nhận tín hiệu
}
void loop() {
// put your main code here, to run repeatedly:
if(irrecv.decode(&results)) //Nếu có kết quả trả về
{
Serial.println(results.value, HEX); //In giá trị nút nhấn kiểu HEX
delay(200);
irrecv.resume(); //Chờ nhận tín hiệu tiếp theo
}
}
Giải thích code:
Với đoạn code trên mình dùng remote hồng ngoại như sau:
Khi nhấn trước cảm biến thu hồng ngoại sẽ có mã như sau:#include<IRremote.h>
const int chanRemote=8; //Chân IR1838
IRrecv irrecv(chanRemote);
decode_results results;
int led1=2; //Chân led 1
int led2=3; //Chân led 2
boolean trangthailed1=LOW; //Trạng thái led1 và led2 và low
boolean trangthailed2=LOW;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
irrecv.enableIRIn();
}
void loop() {
// put your main code here, to run repeatedly:
if(irrecv.decode(&results)) //Nếu nhận được tín hiêu jremote
{
if (results.value==0xFF30CF) // tín hiệu nhận được là nút 1
{ //Serial.println("Dang nhan ON/OFF");
trangthailed1= !trangthailed1; // Đổi trạng thái led (Tắt thành sáng, sagns thành tắt)
digitalWrite(led1,trangthailed1);//Ghi trạng thái vừa đổi cho led
}
if (results.value==0xFF18E7) //Nếu nút nhấn là nút 2
{ //Serial.println("Dang nhan ON/OFF");
trangthailed2= !trangthailed2;
digitalWrite(led2,trangthailed2);
}
irrecv.resume();
}
}
Giải thích: Trong đoạn code trên đầu tiên chúng ta khai báo các chân là: Remote 8, led1 2, led2 3.
- Lúc đầu gán trạng thái 2 led là LOW (tắt).
- Nếu có nút nhấn thì kiểm tra:
- Nếu mã code là nút 1 thì đổi trạng thái led (LOW thành HIGH hoặc HIGH thành LOW) rồi ghi vào led1 để led 1 sáng hoặc tắt tùy vào giá trị ghi vào.
- Nếu mã code là nút 2 thì đổi trạng thái led (LOW thành HIGH hoặc HIGH thành LOW) rồi ghi vào led1 để led 2 sáng hoặc tắt tùy vào giá trị ghi vào.
- Chú ý: Nhấn lần đầu bật, lần 2 tắt và lặp lại.
Đăng nhận xét