Armadillo-400シリーズのLEDは、LEDクラスとして実装されています。LEDクラスディレクトリ以下のファイルによってLEDの制御を行うことができます。LEDクラスディレクトリとLEDの対応については、表8.1「LEDクラスディレクトリとLEDの対応」を参照してください。
表8.1 LEDクラスディレクトリとLEDの対応
LEDクラスディレクトリ | 説明 |
---|
/sys/class/leds/red/ | LED3 (赤) |
/sys/class/leds/green/ | LED4 (緑) |
/sys/class/leds/yellow/ | LED5 (黄) |
LEDクラスディレクトリ以下のbrightnessファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。brightnessに書き込む有効な値は0~255です。
brightnessに0以外の値を書き込むとLEDが点灯します。Armadillo-400シリーズのLEDには輝度制御の機能が無いため値は意味を持ちません。
brightnessに0値を書き込むとLEDが消灯します。
brightnessを読み出すとLEDの状態が取得できます。0が消灯、0以外が点灯を表わします。
LEDクラスディレクトリ以下のtriggerファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。triggerに書き込む有効な値は表8.2「triggerの設定」を参照してください。
表8.2 triggerの設定
設定 | 説明 |
---|
none | トリガを設定しません。 |
mmc0 | microSDカードのアクセスランプにします。 |
timer | 任意のタイミングで点灯/消灯を行います。この設定にすることにより、LEDクラスディレクトリ以下にdelay_on, delay_offファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します。 |
heartbeat | 心拍のように点灯/消灯を行います。 |
default-on | 主にカーネルから使用します。起動時にLEDが点灯します。 |
以下のコマンドを実行すると、LED3が1秒点灯、500ミリ秒消灯を繰り返します。
triggerを読み出すとLEDのトリガが取得できます。[]が付いているものが現在のトリガです。
Armadillo-400シリーズのGPIOは、generic GPIOとして実装されています。GPIOディレクトリ以下のファイルによってGPIOの制御を行うことができます。GPIOディレクトリとGPIOの対応については、表8.3「GPIOディレクトリとGPIOの対応」を参照してください。
表8.3 GPIOディレクトリとGPIOの対応
GPIOディレクトリ | 説明 |
---|
/sys/class/gpio/CON9_1/ | CON9 1ピン |
/sys/class/gpio/CON9_2/ | CON9 2ピン |
/sys/class/gpio/CON9_11/ | CON9 11ピン |
/sys/class/gpio/CON9_12/ | CON9 12ピン |
/sys/class/gpio/CON9_13/ | CON9 13ピン |
/sys/class/gpio/CON9_14/ | CON9 14ピン |
/sys/class/gpio/CON9_15/ | CON9 15ピン |
/sys/class/gpio/CON9_16/ | CON9 16ピン |
/sys/class/gpio/CON9_17/ | CON9 17ピン |
/sys/class/gpio/CON9_18/ | CON9 18ピン |
/sys/class/gpio/CON9_21/ | CON9 21ピン |
/sys/class/gpio/CON9_22/ | CON9 22ピン |
/sys/class/gpio/CON9_23/ | CON9 23ピン |
/sys/class/gpio/CON9_24/ | CON9 24ピン |
/sys/class/gpio/CON9_25/ | CON9 25ピン |
/sys/class/gpio/CON9_26/ | CON9 26ピン |
/sys/class/gpio/CON9_27/ | CON9 27ピン |
/sys/class/gpio/CON9_28/ | CON9 28ピン |
GPIOディレクトリ以下のdirectionファイルへ値を書き込むことによって、入出力方向を変更することができます。directionに書き込む有効な値は表8.4「directionの設定」を参照してください。
表8.4 directionの設定
設定 | 説明 |
---|
high | 入出力方向をOUTPUTに設定します。入力レベルの取得/設定を行うことができます。入力レベルはHIGHレベルになります。 |
out | 入出力方向をOUTPUTに設定します。入力レベルの取得/設定を行うことができます。入力レベルはLOWレベルになります。 |
low | outを設定した場合と同じです。 |
in | 入出力方向をINPUTに設定します。入力レベルの取得を行うことができますが設定はできません。 |
GPIOディレクトリ以下のvalueファイルへ値を読み出すことによって、入力レベルを取得することができます。0はLOWレベル、1はHIGHレベルを表わします。入力レベルの取得は入出力方向がINPUT, OUTPUTのどちらでも行うことができます。
GPIOディレクトリ以下のvalueファイルへ値を書き込むことによって、出力レベルを設定することができます。0はLOWレベル、0以外はHIGHレベルを表わします。出力レベルの設定は入出力方向がOUTPUTでなければ行うことはできません。
Armadillo-440ベーシックモデル開発セットでは、RTC オプションモジュールが標準で接続されています。そのため、RTC(カレンダ時計)の機能により、電源を遮断しても時刻を保持することができます。
RTCに時刻を設定するためには、まずシステムクロックを設定します。その後に、ハードウェアクロック(RTC)をシステムクロックと一致させる手順となります。
8.3.1. システムクロックをdateで設定する
dateコマンドの引数で渡す時刻のフォーマットは[MMDDhhmmCCYY.ss]となります。以下の例では、現在時刻として2015年10月28日12時34分00秒に設定しています。
[armadillo ~]#
date
[armadillo ~]#
date 102812342015.00
[armadillo ~]#
date
8.3.2. システムクロックをNTPクライアントで設定する
NTPクライアントを使用してシステムクロックを設定することができます。詳しくは「NTPクライアント」を参照してください。
[armadillo ~]#
hwclock
[armadillo ~]#
hwclock --utc --systohc
[armadillo ~]#
hwclock
Armadillo-400 シリーズでは、UVC(USB Video Class)対応のWebカメラを使用することができます[]。
Armadillo-440ベーシックモデル開発セットの標準イメージでは、USB High Speedポート(CON5 下段)にUVC対応Webカメラを接続すると、自動でビデオサーバーが起動しブラウザ経由でカメラが撮影した画像を閲覧することができます。
ビデオサーバーには、MJPG-streamerを使用しています。Webカメラが接続されると、udevによりMJPG-streamerを起動します。MJPG-streamer起動中は、LED3(赤)が点滅します。
LED3(赤)が点滅している状態で、Webブラウザで http://(Armadillo-440のIPアドレス):8080/ にアクセスすると、MJPG-Streamerのデモページが表示されます。
| |
---|
Javaによるサンプルを動作させるには、使用しているPCに適切にJavaランタイムがインストールされている必要があります。また、InternetExplolerでStreamを表示するには、PCにコーデックが適切にインストールされている必要があります。
|
| |
---|
MJPG-streamerが動作している時にWebカメラを引き抜くと、カーネルが下記のようなワーニングメッセージをコンソールに表示します。このメッセージは、問題ありません[]。このメッセージは、Webカメラのように物理的には1つのデバイスですが、内部的には複数の機能 (この場合はビデオとコントロール用の入力)を持つデバイスで発生しています。カーネルが保持している複数のデバイスの後処理が行われた場合に、すでに片方が後処理されているにもかかわらず、もう一度後処理をしようとした事をカーネルが検知しワーニングを出しています。現在、問題の報告や修正案が Linux Kernel Mailing List に提出されていますが Linux v4.1 でもまだ直っていません。 ワーニングを表示しないようにするには、MJPEG-streamerを終了してから Web カメラを抜いてください。
usb 2-1: USB disconnect, device number 2
------------[ cut here ]------------
WARNING: CPU: 0 PID: 1631 at fs/sysfs/group.c:216 sysfs_remove_group+0x4c/0x94()
sysfs group c06e0c58 not found for kobject 'event1'
Modules linked in:
CPU: 0 PID: 1631 Comm: mjpg_streamer Not tainted 3.14.36-at2 #7
[<c000d838>] (unwind_backtrace) from [<c000bcd0>] (show_stack+0x10/0x14)
[<c000bcd0>] (show_stack) from [<c0017e1c>] (warn_slowpath_common+0x64/0x84)
[<c0017e1c>] (warn_slowpath_common) from [<c0017ebc>] (warn_slowpath_fmt+0x2c/0x3c)
[<c0017ebc>] (warn_slowpath_fmt) from [<c0151d2c>] (sysfs_remove_group+0x4c/0x94)
[<c0151d2c>] (sysfs_remove_group) from [<c0286158>] (device_del+0x34/0x16c)
[<c0286158>] (device_del) from [<c03046c8>] (evdev_disconnect+0x18/0x44)
[<c03046c8>] (evdev_disconnect) from [<c0302580>] (__input_unregister_device+0xe0/0x180)
[<c0302580>] (__input_unregister_device) from [<c03027fc>] (input_unregister_device+0x4c/0x70)
[<c03027fc>] (input_unregister_device) from [<c032319c>] (uvc_delete+0xc/0xfc)
[<c032319c>] (uvc_delete) from [<c0310e3c>] (v4l2_device_release+0x98/0xb8)
[<c0310e3c>] (v4l2_device_release) from [<c02857cc>] (device_release+0x5c/0x90)
[<c02857cc>] (device_release) from [<c022f19c>] (kobject_release+0x60/0x74)
[<c022f19c>] (kobject_release) from [<c030f7b0>] (v4l2_release+0x60/0x70)
[<c030f7b0>] (v4l2_release) from [<c00f0a50>] (__fput+0xd4/0x214)
[<c00f0a50>] (__fput) from [<c0033440>] (task_work_run+0x94/0xa8)
[<c0033440>] (task_work_run) from [<c001a130>] (do_exit+0x498/0xa40)
[<c001a130>] (do_exit) from [<c001a7d0>] (do_group_exit+0xcc/0xf8)
[<c001a7d0>] (do_group_exit) from [<c001a80c>] (__wake_up_parent+0x0/0x18)
---[ end trace 128ed9d0b95bde7e ]---
------------[ cut here ]------------
WARNING: CPU: 0 PID: 1631 at fs/sysfs/group.c:216 sysfs_remove_group+0x4c/0x94()
sysfs group c06e0c58 not found for kobject 'input1'
Modules linked in:
CPU: 0 PID: 1631 Comm: mjpg_streamer Tainted: G W 3.14.36-at2 #7
[<c000d838>] (unwind_backtrace) from [<c000bcd0>] (show_stack+0x10/0x14)
[<c000bcd0>] (show_stack) from [<c0017e1c>] (warn_slowpath_common+0x64/0x84)
:
|