HX1838 IR Remote คือชุดโมดูลรีโมทอินฟราเรด (IR) ที่ใช้ควบคุมอุปกรณ์อิเล็กทรอนิกส์ต่าง ๆ แบบไร้สาย โดยประกอบด้วยรีโมทคอนโทรลอินฟราเรด และตัวรับสัญญาณอินฟราเรดที่ใช้ไดโอด IR และวงจรขยายสัญญาณในตัว โมดูลนี้เป็นที่นิยมใช้ในโปรเจกต์ Arduino เพราะมีราคาถูก ใช้งานง่าย และสามารถประยุกต์ใช้งานได้หลากหลาย
1.ดาวน์โหลด และติดตั้ง IRremote
ติดตั้ง Library
ArduinoIDE > Sketch > Include Library > Add .ZIP Library > หาไฟล์ที่ดาวน์โหลด

2.ต่ออุปกรณ์

ir receiver > Arduino UNO
+>5V->GNDS>PIN 7
3.ลงโปรแกรม
Copy โค้ดด้านล่าง
1#include <IRremote.h>
2
3const int IR_RECEIVE_PIN = 7;
4
5void setup() {
6 Serial.begin(9600);
7 IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
8}
9
10void loop() {
11 if (IrReceiver.decode()) {
12 uint32_t value = IrReceiver.decodedIRData.command;
13 switch (value) {
14 case 0x45: Serial.println("1"); break;
15 case 0x46: Serial.println("2"); break;
16 case 0x47: Serial.println("3"); break;
17 case 0x44: Serial.println("4"); break;
18 case 0x40: Serial.println("5"); break;
19 case 0x43: Serial.println("6"); break;
20 case 0x07: Serial.println("7"); break;
21 case 0x15: Serial.println("8"); break;
22 case 0x09: Serial.println("9"); break;
23 case 0x19: Serial.println("0"); break;
24 case 0x16: Serial.println("*"); break;
25 case 0x0D: Serial.println("#"); break;
26 case 0x18: Serial.println("UP"); break;
27 case 0x52: Serial.println("DOWN"); break;
28 case 0x08: Serial.println("LEFT"); break;
29 case 0x5A: Serial.println("RIGHT"); break;
30 case 0x1C: Serial.println("OK"); break;
31 default: Serial.print("UNKNOWN: "); Serial.println(value, HEX); break;
32 }
33 IrReceiver.resume();
34 }
35}
361#include <IRremote.h>
2
3const int IR_RECEIVE_PIN = 7;
4
5void setup() {
6 Serial.begin(9600);
7 IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
8}
9
10void loop() {
11 if (IrReceiver.decode()) {
12 uint32_t value = IrReceiver.decodedIRData.command;
13 switch (value) {
14 case 0x45: Serial.println("1"); break;
15 case 0x46: Serial.println("2"); break;
16 case 0x47: Serial.println("3"); break;
17 case 0x44: Serial.println("4"); break;
18 case 0x40: Serial.println("5"); break;
19 case 0x43: Serial.println("6"); break;
20 case 0x07: Serial.println("7"); break;
21 case 0x15: Serial.println("8"); break;
22 case 0x09: Serial.println("9"); break;
23 case 0x19: Serial.println("0"); break;
24 case 0x16: Serial.println("*"); break;
25 case 0x0D: Serial.println("#"); break;
26 case 0x18: Serial.println("UP"); break;
27 case 0x52: Serial.println("DOWN"); break;
28 case 0x08: Serial.println("LEFT"); break;
29 case 0x5A: Serial.println("RIGHT"); break;
30 case 0x1C: Serial.println("OK"); break;
31 default: Serial.print("UNKNOWN: "); Serial.println(value, HEX); break;
32 }
33 IrReceiver.resume();
34 }
35}
36
4.ผลลัพธ์
โค้ดนี้ทำหน้าที่รับสัญญาณจากรีโมท HX1838 ผ่านขา D7 ของ Arduino Uno เมื่อมีการกดปุ่มบนรีโมท ระบบจะอ่านค่ารหัสของปุ่ม (command) แล้วแสดงชื่อปุ่มหรือทิศทางผ่านพอร์ต Serial เช่น หากกดเลข 1 จะแสดง "1" หรือกดลูกศรขึ้นจะแสดง "UP" หากปุ่มไม่ตรงกับที่กำหนด จะแสดงรหัส HEX ว่า "UNKNOWN" โค้ดนี้จึงใช้ตรวจสอบและแปลงรหัสรีโมทให้เป็นข้อความเข้าใจง่ายบน Serial Monitor

