この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
xg_series_devel:lighting_up_led:start [2018/03/19 15:53] admin |
xg_series_devel:lighting_up_led:start [2018/12/25 09:44] (現在) admin |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
+ | ====== LED の制御 ====== | ||
+ | |||
+ | XG-50 には、以下のとおり LED が実装されています。 | ||
+ | |||
+ | {{:xg_series_devel:lighting_up_led:xg-50_panel_leds.jpeg?600|XG-50 panel}} | ||
+ | |||
+ | \\ | ||
+ | |||
+ | |<24em 3em 2em 12em >| | ||
+ | ^ シルク ^ 色 ^ Note ^ | ||
+ | | PWR | @#ff0000:<color black>赤</color> |**autoled** として OS が制御| | ||
+ | |:::| @#00ff00:<color black>緑</color> |boardctl() 経由で制御| | ||
+ | | STS1 | @#ff0000:<color black>赤</color> |LED driver((TCA6507)) 経由で制御| | ||
+ | |:::| @#00ff00:<color black>緑</color> |:::| | ||
+ | | STS2 | @#ff0000:<color black>赤</color> |:::| | ||
+ | |:::| @#00ff00:<color black>緑</color> |:::| | ||
+ | | STS3 | @#ff0000:<color black>赤</color> |:::| | ||
+ | |:::| @#00ff00:<color black>緑</color> |:::| | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== POWER LED(緑) の制御 ===== | ||
+ | |||
+ | **boardctl(BIOC_SET_LED)** で 点灯/消灯 を制御します。 | ||
+ | |||
+ | <code> | ||
+ | bool onoff = true; | ||
+ | |||
+ | boardctl(BIOC_SET_LED, (uintptr_t) onoff); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== STATUS LED の制御 ===== | ||
+ | |||
+ | |||
+ | デフォルトの **CONFIG** では、LED driver として **/dev/leddrv0** が登録されます。 | ||
+ | |||
+ | <code> | ||
+ | nsh> ls -l /dev/ | ||
+ | /dev: | ||
+ | cr--r--r-- 0 adc0 | ||
+ | crw-rw-rw- 0 console | ||
+ | crw-rw-rw- 0 i2c1 | ||
+ | cr--r--r-- 0 leddrv0 <---- | ||
+ | brw-rw-rw- 0 mtdblock0 | ||
+ | crw-rw-rw- 0 null | ||
+ | crw-rw-rw- 0 ptmx | ||
+ | crw-rw-rw- 0 ramlog | ||
+ | cr--r--r-- 0 random | ||
+ | crw-rw-rw- 0 rtc0 | ||
+ | crw-rw-rw- 0 timer0 | ||
+ | crw-rw-rw- 0 ttyS0 | ||
+ | crw-rw-rw- 0 ttyS1 | ||
+ | crw-rw-rw- 0 ttyS2 | ||
+ | crw-rw-rw- 0 ttyS3 | ||
+ | crw-rw-rw- 0 zero | ||
+ | nsh> | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ioctl() により各 LED の ON/OFF を制御することができます。 | ||
+ | |||
+ | <sxh c toolbar:false; title:led_main.c> | ||
+ | #include <nuttx/config.h> | ||
+ | #include <stdio.h> | ||
+ | #include <fcntl.h> | ||
+ | #include <sys/ioctl.h> | ||
+ | |||
+ | #include <nuttx/leds/tca6507.h> | ||
+ | |||
+ | int led_main(int argc, char **argv) | ||
+ | { | ||
+ | int fd, ret = -1; | ||
+ | struct tca6507_onoff_s leds; /* この構造体でリクエストを発行 */ | ||
+ | |||
+ | fd = open("/dev/leddrv0", O_RDONLY); | ||
+ | |||
+ | if (fd > 0) | ||
+ | { | ||
+ | |||
+ | leds.led = LED_STATUS3_GREEN; /* STATUS LED 3 の Green を */ | ||
+ | leds.on = 1; /* 点灯させる */ | ||
+ | |||
+ | ioctl(fd, LEDIOC_ONOFF, (intptr_t) &leds); | ||
+ | |||
+ | close(fd); | ||
+ | | ||
+ | ret = 0; | ||
+ | } | ||
+ | | ||
+ | return ret; | ||
+ | } | ||
+ | </sxh> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== LED OFF Switch ===== | ||
+ | |||
+ | 電池で駆動させる場合など、LED の消費電力が問題になるケースがあります。\\ | ||
+ | そのような用途で、LED を強制的に**消灯**させるスイッチを用意してあります。 | ||
+ | |||
+ | {{:xg_series_devel:lighting_up_led:xg-50_panel_led_sw.jpeg?600|LED OFF Switch}} | ||
+ | |||
+ | スイッチを右側にスライドさせると、LED が全消灯となります。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== Switch 状態の取得 ==== | ||
+ | |||
+ | boardctl() で LED OFF Switch の状態を取得することができます。 | ||
+ | |||
+ | <code> | ||
+ | int sw_state; | ||
+ | |||
+ | boardctl(BIOC_GET_LEDSW, (uintptr_t) &sw_state); # sw_state == 0 --> LED OFF | ||
+ | </code> | ||