Trong nội dung bài viết khóa học lập trình Arduino hôm mình mình xin gửi đến các bạn một chủ đề mới (linh kiện mới IR), dùng để điều khiển các thiết bị.
Thông qua bài viết các bạn sẽ nắm được chức năng cấu tạo của IR Receiver trong lập trình Arduino.
Với chủ đề hôm nay mình sẽ dùng ánh sáng hồng ngoại IR để bật tắt LED nhé.
IR Receiver
Bức xạ hồng ngoại (IR), hay ánh sáng hồng ngoại, là dạng năng lượng bức xạ mà mắt người không nhìn thấy nhưng chúng ta có thể cảm nhận dưới dạng nhiệt. Mọi vật trong vũ trụ đều phát bức xạ IR ở mức nào đó, song có hai nguồn dễ thấy nhất là mặt trời và ngọn lửa.
IR là một loại bức xạ điện từ, một dải liên tục tần số được tạo ra khi các nguyên tử hấp thụ và sau đó giải phóng năng lượng. Từ tần số cao nhất đến thấp nhất, bức xạ điện từ bao gồm tia gamma, tia X, bức xạ tử ngoại, ánh sáng nhìn thấy, bức xạ hồng ngoại, vi sóng và sóng vô tuyến.
Sơ đồ nguyên lý
Các linh kiện cần thiết cho dự án
Tên linh kiện | Số lượng |
Arduino Uno R3 | 1 |
Dây cắm | 6 |
Breadboard | 1 |
IR Receiver | 1 |
LED 5mm | 1 |
Trở 220R | 1 |
IR Remote | 1 |
Code
#include <IRremote.h>
int RECV_PIN = 11;
int ledPin = 10;
boolean ledState = LOW;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(ledPin,OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if(results.value == 0xFD00FF){
ledState = !ledState;
digitalWrite(ledPin,ledState);
}
irrecv.resume();
}
}
Giải thích code
Đầu tiên kiểm tra xem remote đã nhận tín hiệu chưa nếu quá trình nhận tín hiệu thành công thì xuất ra màn hình giá trị mã HEX.
if (irrecv.decode(&results))
...
if(results.value == 0xFD00FF)
Đảo trạng thái của LED
ledState = !ledState;
digitalWrite(ledPin,ledState);
Nhận giá trị tiếp theo.
irrecv.resume();
Thư viện
Cài đặt thư viện IR Remote: Tải ngay