참고: http://blog.prettymay.com/220670957502
[설치]
$ sudo apt-get install lirc liblircclient-dev
[핀설정]
$ sudo nano /etc/modules
파일 끝에 아래 내용을 추가
lirc_dev
lirc_rpi gpio_in_pin=18 <-- 연결된 핀번호
$ sudo nano /etc/lirc/hardware.conf
아래내용으로 수정
LIRCD_ARGS="--uinput"
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"
$ sudo nano /boot/config.txt
[수신확인]
$ sudo /etc/init.d/lirc stop
$ mode2 -d /dev/lirc0
[키와 매핑하기 (record)]
$ irrecord -d /dev/lirc0 ~/lircd.conf
그러면 모든 키를 입력라하는 말이 나옴. 그과정에 lircd.conf 파일이 만들어짐
$sudo cp ~/lircd.conf /etc/lirc/lircd.conf
덮어 쓰기.
[데몬 시작]
$ sudo /etc/init.d/lirc restart
테스트 소스
#include <wiringPi.h>
#include <lirc/lirc_client.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define LED_B 4
#define LED_R 5
#define LED_G 6
#define LED_ON 1
#define LED_OFF 0
void ledOnOff(int led) {
if (digitalRead(led) == LED_ON)
digitalWrite(led, LED_OFF);
else
digitalWrite(led, LED_ON);
}
int main() {
struct lirc_config *config;
int buttonTimer = millis();
char *code;
if (wiringPiSetup() == -1)
exit(1);
pinMode(LED_B, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(LED_G, OUTPUT);
if (lirc_init("lirc", 1) == -1)
exit(EXIT_FAILURE);
if (lirc_readconfig(NULL, &config, NULL) == 0) {
while (lirc_nextcode(&code) == 0) {
if (code == NULL)
continue;
if (millis() - buttonTimer > 400) {
if (strstr(code, "KEY_1")) {
printf("Match on KEY_1\n");
ledOnOff(LED_B);
buttonTimer = millis();
} else if (strstr(code, "KEY_2")) {
printf("Match on KEY_2\n");
ledOnOff(LED_R);
buttonTimer = millis();
} else if (strstr(code, "KEY_3")) {
printf("Match on KEY_3\n");
ledOnOff(LED_G);
buttonTimer = millis();
}
}
free(code);
}
lirc_freeconfig(config);
}
lirc_deinit();
exit(EXIT_SUCCESS);
}
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5