당신은 TV와 에어컨과 같은 가정용 전자기기를 사용하면서 적외선 리모콘, 즉 IR 리모콘을 접해본 적이 있을 것입니다... 이 튜토리얼에서, 우리는 적외선(IR) 리모콘과 적외선 수신기를 사용하여 아두이노를 제어하는 방법을 배울 것입니다. 구체적으로, 우리는 다음을 배울 것입니다:
아두이노 보드에 IR 수신기를 연결하는 방법
IR 수신기를 통해 IR 리모컨의 명령을 읽기 위해 아두이노를 프로그래밍하는 방법
그러면 IR 리모컨을 통해 LED, 팬, 펌프, 액추에이터 등을 제어하기 위한 코드를 수정할 수 있습니다.
#include <DIYables_IRcontroller.h> // IR 수신기용 라이브러리
17키 또는 21키 IR 리모컨에 해당하는 DIYables_IRcontroller_17 또는 DIYables_IRcontroller_21 객체를 선언합니다.
DIYables_IRcontroller_17irController(IR_RECEIVER_PIN, 200); // 디바운스 시간은 200ms입니다// 혹은DIYables_IRcontroller_21irController(IR_RECEIVER_PIN, 200); // 디바운스 시간은 200ms입니다
IR 컨트롤러를 초기화하세요.
irController.begin();
루프에서 키가 눌렸는지 확인하세요. 만약 그렇다면, 키를 가져오세요.
Key17 key = irController.getKey(); // 17키 IR 컨트롤러를 사용하는 경우// ORKey21 key = irController.getKey(); // 21키 IR 컨트롤러를 사용하는 경우
키 입력을 감지하면 각 키에 따라 특정 작업을 수행할 수 있습니다.
아두이노 코드
[DIYables 17키 IR 리모컨]용 아두이노 코드
/* * 이 아두이노 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-ir-remote-control */#include <DIYables_IRcontroller.h> // DIYables_IRcontroller 라이브러리#define IR_RECEIVER_PIN 7 // IR 컨트롤러에 연결된 아두이노 핀DIYables_IRcontroller_17irController(IR_RECEIVER_PIN, 200); // 디바운스 시간은 200ms입니다.voidsetup() {Serial.begin(9600);irController.begin();}voidloop() {Key17 key = irController.getKey();if (key != Key17::NONE) {switch (key) {caseKey17::KEY_1:Serial.println("1");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_2:Serial.println("2");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_3:Serial.println("3");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_4:Serial.println("4");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_5:Serial.println("5");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_6:Serial.println("6");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_7:Serial.println("7");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_8:Serial.println("8");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_9:Serial.println("9");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_STAR:Serial.println("*");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_0:Serial.println("0");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_SHARP:Serial.println("#");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_UP:Serial.println("UP");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_DOWN:Serial.println("DOWN");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_LEFT:Serial.println("LEFT");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_RIGHT:Serial.println("RIGHT");// 할 일: 여러분의 컨트롤break;caseKey17::KEY_OK :Serial.println("OK");// 할 일: 여러분의 컨트롤break;default:Serial.println("WARNING: undefined key:");break; } }}
/* * 이 아두이노 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-ir-remote-control */#include <DIYables_IRcontroller.h> // DIYables_IRcontroller 라이브러리#define IR_RECEIVER_PIN 7 // IR 컨트롤러에 연결된 아두이노 핀DIYables_IRcontroller_21irController(IR_RECEIVER_PIN, 200); // 디바운스 시간은 200ms입니다voidsetup() {Serial.begin(9600);irController.begin();}voidloop() {Key21 key = irController.getKey();if (key != Key21::NONE) {switch (key) {caseKey21::KEY_CH_MINUS:Serial.println("CH-");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_CH:Serial.println("CH");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_CH_PLUS:Serial.println("CH+");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_PREV:Serial.println("<<");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_NEXT:Serial.println(">>");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_PLAY_PAUSE:Serial.println(">||");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_VOL_MINUS:Serial.println("–");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_VOL_PLUS:Serial.println("+");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_EQ:Serial.println("EQ");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_100_PLUS:Serial.println("100+");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_200_PLUS:Serial.println("200+");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_0:Serial.println("0");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_1:Serial.println("1");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_2:Serial.println("2");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_3:Serial.println("3");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_4:Serial.println("4");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_5:Serial.println("5");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_6:Serial.println("6");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_7:Serial.println("7");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_8:Serial.println("8");// 할 일: 여러분의 컨트롤break;caseKey21::KEY_9:Serial.println("9");// 할 일: 여러분의 컨트롤break;default:Serial.println("WARNING: undefined key:");break; } }}
사용 방법
Arduino IDE의 왼쪽 바에 있는 Libraries 아이콘으로 이동하세요.
"DIYables_IRcontroller"을 검색한 다음, DIYables에서 제공하는 DIYables_IRcontroller 라이브러리를 찾으세요.
DIYables_IRcontroller 라이브러리를 설치하려면 Install 버튼을 클릭하세요.
아래 이미지와 같이 라이브러리 종속성을 설치하라는 요청을 받게 될 것입니다:
의존성을 설치하려면 Install All 버튼을 클릭하세요.
위의 코드를 복사하고 Arduino IDE로 열기
코드를 Arduino에 업로드하려면 Arduino IDE에서 Upload 버튼을 클릭하세요.
리모콘의 키를 하나씩 누르세요.
시리얼 모니터에서 결과를 확인하세요.
아래는 21키 IR 컨트롤러의 키를 하나씩 눌렀을 때의 결과입니다:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')