참고: 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