Sử dụng Arduino, cảm biến hồng ngoại và điều khiển từ xa để điều khiển đèn LED.
Trong dự án này, chúng tôi sẽ điều khiển đèn LED bằng cảm biến hồng ngoại và điều khiển từ xa. Cảm biến IR là bộ thu IR 1838B. Bất cứ khi nào một nút trên điều khiển từ xa được nhấn, nó sẽ gửi tín hiệu hồng ngoại đến cảm biến IR ở dạng mã hóa. Sau đó, cảm biến IR sẽ nhận tín hiệu này và đưa nó đến Arduino.
Làm thế nào nó hoạt động?
Bất cứ khi nào một nút được nhấn trên điều khiển từ xa, nó sẽ gửi tín hiệu hồng ngoại ở dạng mã hóa. Tín hiệu này sau đó được nhận bởi bộ thu IR và đưa cho Arduino.
Chúng tôi sẽ lưu mã cho các nút mà chúng tôi muốn điều khiển đèn LED trong mã Arduino. Bất cứ khi nào một nút trên điều khiển được nhấn, Arduino sẽ nhận được một mã. Arduino sẽ so sánh mã này với các mã đã được lưu và nếu bất kỳ mã nào khớp với nhau, Arduino sẽ bật đèn LED được kết nối với nút đó.
Sơ đồ mạch
Đầu tiên, kết nối bốn đèn LED với Arduino. Kết nối cực dương của bốn đèn LED với chân 7, 6, 5 và 4. Kết nối cực âm của bốn đèn LED với GND trên Arduino thông qua các điện trở 220 ohm. Các dây dài hơn trên đèn LED là cực dương và các dây ngắn hơn là cực âm.
Sau đó, kết nối cảm biến IR với Arduino. Các kết nối cho cảm biến IR với Arduino như sau:
Kết nối dây âm trên cảm biến IR với GND trên Arduino.
Kết nối giữa cảm biến IR là VCC với 5V trên Arduino.
Kết nối chân tín hiệu trên cảm biến IR với chân 8 trên Arduino.
Mã Arduino
[CODE]#include
#define first_key 48703
#define second_key 58359
#define third_key 539
#define fourth_key 25979
int receiver_pin = 8;
int first_led_pin = 7;
int second_led_pin = 6;
int third_led_pin = 5;
int fourth_led_pin = 4;
int led[] = {0,0,0,0};
IRrecv receiver(receiver_pin);
decode_results output;
void setup()
{
Serial.begin(9600);
receiver.enableIRIn();
pinMode(first_led_pin, OUTPUT);
pinMode(second_led_pin, OUTPUT);
pinMode(third_led_pin, OUTPUT);
pinMode(fourth_led_pin, OUTPUT);
}
void loop() {
if (receiver.decode(&output)) {
unsigned int value = output.value;
switch(value) {
case first_key:
if(led[1] == 1) {
digitalWrite(first_led_pin, LOW);
led[1] = 0;
} else {
digitalWrite(first_led_pin, HIGH);
led[1] = 1;
}
break;
case second_key:
if(led[2] == 1) {
digitalWrite(second_led_pin, LOW);
led[2] = 0;
} else {
digitalWrite(second_led_pin, HIGH);
led[2] = 1;
}
break;
case third_key:
if(led[3] == 1) {
digitalWrite(third_led_pin, LOW);
led[3] = 0;
} else {
digitalWrite(third_led_pin, HIGH);
led[3] = 1;
}
break;
case fourth_key:
if(led[4] == 1) {
digitalWrite(fourth_led_pin, LOW);
led[4] = 0;
} else {
digitalWrite(fourth_led_pin, HIGH);
led[4] = 1;
}
break;
}
Serial.println(value);
receiver.resume();
}
}
[/CODE]
Bạn có thể tải mã tại đây: Mã bộ điều khiển Arduino IR
Giải thích mã
Trước hết, chúng tôi đã thêm thư viện cho cảm biến IR và điều khiển từ xa, sau đó chúng tôi xác định mã cho các khóa mà chúng tôi sẽ sử dụng trong dự án của mình. Nếu bạn đang sử dụng mã lần đầu tiên và không biết mã cho các phím, hãy tải mã Arduino lên như cũ và nhấn các phím từ xa — mã cho các phím bạn đã nhấn sẽ được hiển thị trong màn hình nối tiếp. Bây giờ thay đổi mã này bằng mã trước đó cho khóa mà bạn muốn điều khiển đèn LED.
[CODE]#include
#define first_key 48703
#define second_key 58359
#define third_key 539
#define fourth_key 25979
int receiver_pin = 8;
[/CODE]
Tiếp theo, chúng tôi xác định các chân mà chúng tôi đã kết nối các đèn LED. Chúng tôi đã kết nối các đèn LED tại các chân 7, 6, 5 và 4. Vì vậy, chúng tôi đã xác định các chân này là chân LED.
[CODE]int first_led_pin = 7;
int second_led_pin = 6;
int third_led_pin = 5;
int fourth_led_pin = 4;
[/CODE]
Trong chức năng thiết lập, chúng tôi đã xác định các chân LED là chân đầu ra, bởi vì chúng tôi đưa đầu ra cho các đèn LED thông qua các chân đó.
[CODE]pinMode(first_led_pin, OUTPUT);
pinMode(second_led_pin, OUTPUT);
pinMode(third_led_pin, OUTPUT);
pinMode(fourth_led_pin, OUTPUT);
[/CODE]
Trong chức năng vòng lặp, đầu tiên, chúng ta kiểm tra xem đã nhấn phím nào chưa. Nếu bất kỳ phím nào đã được nhấn, thì chúng tôi so sánh phím đó với các phím mà chúng tôi đã xác định trong mã của mình. Cảm biến hồng ngoại được sử dụng nhiều nhất trong nhiệt kế hồng ngoại. Nếu phím khớp với nhau, thì đèn LED được kết nối với chân đó sẽ sáng. Nếu đèn LED được kết nối với chân đó đã sáng, thì nó sẽ tắt.
[CODE]if (receiver.decode(&output)) {
unsigned int value = output.value;
switch(value) {
case first_key:
if(led[1] == 1) {
digitalWrite(first_led_pin, LOW);
led[1] = 0;
} else {
digitalWrite(first_led_pin, HIGH);
led[1] = 1;
}
break;
case second_key:
if(led[2] == 1) {
digitalWrite(second_led_pin, LOW);
led[2] = 0;
} else {
digitalWrite(second_led_pin, HIGH);
led[2] = 1;
}
break;
case third_key:
if(led[3] == 1) {
digitalWrite(third_led_pin, LOW);
led[3] = 0;
} else {
digitalWrite(third_led_pin, HIGH);
led[3] = 1;
}
break;
[/CODE]
[MEDIA=youtube]jpy6B30CwB0[/MEDIA]