From 8913f64d481a3da19d7e03b619605dc67eaf0591 Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Wed, 21 Apr 2021 22:22:08 +0800 Subject: [PATCH] update infrared test.c --- modules/c/infrared.c | 62 +++++++++++++++++------------- 1 files changed, 35 insertions(+), 27 deletions(-) diff --git a/modules/c/infrared.c b/modules/c/infrared.c index 25cd18a..868638d 100644 --- a/modules/c/infrared.c +++ b/modules/c/infrared.c @@ -9,7 +9,8 @@ * * PIN #PIN BCM wPi * VCC(left) ---- 2 ---- 5v ---- 5v - * I/O(mid) ---- 32 ---- 12 ---- 26 + * I/O(indoor) ---- 16 ---- 23 ---- 4 + * I/O(hallway) ---- 18 ---- 24 ---- 5 * GND(right) ---- 34 ---- 0v ---- 0v * * Version: 1.0.0(30/01/19) @@ -20,13 +21,17 @@ #include <stdio.h> #include <unistd.h> +#include <errno.h> +#include <string.h> +//#define CONFIG_USE_WIRINGPI #ifdef CONFIG_USE_WIRINGPI #include <wiringPi.h> -#define INFRARED_PIN 26 +#define INFRARED_PIN 4 +//#define INFRARED_PIN 5 int main (int argc, char **argv) { @@ -39,7 +44,6 @@ sleep(1); } - return 0; } @@ -47,7 +51,8 @@ #include <gpiod.h> -#define INFRARED_PIN 12 +#define INFRARED_PIN 23 +//#define INFRARED_PIN 24 int main (int argc, char **argv) { @@ -59,44 +64,47 @@ chip = gpiod_chip_open_by_name("gpiochip0"); if( !chip ) { - printf("gpiod open chip failure, maybe you need running as root\n"); - return 1; + printf("gpiod open chip failure, maybe you need running as root\n"); + return 1; } line = gpiod_chip_get_line(chip, INFRARED_PIN); if( !line ) { - printf("gpiod get line[%d] failure\n", INFRARED_PIN); - rv = 2; - goto cleanup; + printf("gpiod get line[%d] failure\n", INFRARED_PIN); + rv = 2; + goto cleanup; } - if( gpiod_line_request_rising_edge_events(line, "infrared") < 0 ) + //if( gpiod_line_request_rising_edge_events(line, "infrared") < 0 ) + if( gpiod_line_request_falling_edge_events(line, "infrared") < 0 ) { - printf("gpiod request rising edge event failure\n"); - rv = 3; - goto cleanup; + printf("gpiod request rising edge event failure: %s\n", strerror(errno)); + rv = 3; + goto cleanup; } while(1) { - /* This function will block, must call it to setup */ + /* This function will block, must call it to setup */ + printf("Start gpiod_line_event_wait...\n"); if( gpiod_line_event_wait(line, NULL) < 0 ) - { - printf("gpiod line wait event failure!\n"); - } - - /* This function will block, must read to clear the event */ - if (gpiod_line_event_read(line, &event) < 0) - { - printf("gpiod line wait event failure!\n"); - } + { + printf("gpiod line wait event failure!\n"); + } - if (event.event_type == GPIOD_LINE_EVENT_RISING_EDGE) - { - printf("Infrared monitor: Someone is closing!\n"); - } + /* This function will block, must read to clear the event */ + printf("Start gpiod_line_event_read...\n"); + if (gpiod_line_event_read(line, &event) < 0) + { + printf("gpiod line wait event failure!\n"); + } + + if (event.event_type == GPIOD_LINE_EVENT_RISING_EDGE) + { + printf("Infrared monitor: Someone is closing!\n"); + } } cleanup: -- Gitblit v1.9.1