SegLED使用方法・APIリファレンス

segled-api

SegLEDライブラリには、コア部分のSegLEDクラスを提供するsegled.rbと、ユーティリティ機能モジュールを提供するsegled-utils.rbの2つがあります。

segled.rb - SegLEDクラス

LED操作用のSegLEDクラスを提供します。

基本的な使用方法

1秒毎にH, E, L, L, Oを順番に表示します。

require 'segled'

SegLED.open { |led|
  led.print "HELLO"
}

APIリファレンス(SegLEDクラス)

定数値

segled.png

SegLED::Constants

OpenBlockSSを横置きしたときのLEDのイメージ図と定数の関係は上記イメージ図のとおりです。

上記の各LED毎に以下の定数値を用意しています。

  • SegLED::Constants::L - LEFT
  • SegLED::Constants::R - RIGH
  • SegLED::Constants::C - CENTER
  • SegLED::Constants::TL - TOP-LEFT
  • SegLED::Constants::TR - TOP-RIGHT
  • SegLED::Constants::BL - BOTTOM-LEFT
  • SegLED::Constants::BR - BOTTOM-RIGHT
  • SegLED::Constants::DOT - DOT
  • SegLED::Constants::TOP - TOP(TR + TL)
  • SegLED::Constants::BTM - BOTTOM(BR + BL)
  • SegLED::Constants::ALL - ALL
  • SegLED::Constants::NONE - NONE

SegLEDクラスはSegLED::Constantsをincludeしていますので、SegLED::LとSegLED::Constants::Lは同じ意味になります。

クラスメソッド

SegLED.open
SegLED.open{|led| proc}
ブロックを指定しなかった場合は、SegLEDをオープンしSegLEDオブジェクトを返します。ブロックを指定した場合はSegLEDオブジェクトが与えられてブロックが実行されます。ブロックの実行が終了するとSegLEDオブジェクトは自動的にクローズされます。この場合は返り値はnilです。
SegLED.new(io)
/dev/segledのファイルオブジェクトを引数にSegLEDオブジェクトを生成します。 このメソッドは通常使いません。

インスタンスメソッド

close
SegLEDオブジェクトをクローズします。
closed?
SegLEDオブジェクトがクローズされている場合はtrueを、そうでない場合はfalseを返します。
print(val, interval = 0, flush_interval = 0)
valはStringかArrayのどちらかを与えることができます。
  • Stringの場合、valによって与えられた文字列を1文字ずつinterval秒間表示します。 1文字表示するとflash_interval秒間LEDをクリアし次の文字に移ります。interval, flash_intervalのデフォルト値はともに0です。 valはASCII文字列のみ指定可能ですが、字によってはきれいに表示されません。
  • Arrayの場合、valはwrite(n)に渡す定数値の配列にします。valによって与えられた 定数値を1つずつintervalの間表示します。1要素分表示すると、flash_intervalの間LEDをクリアし次の文字に移ります。interval, flash_intervalのデフォルト値はともに0秒です。
write(n, interval = 0)

LEDを表示しinterval秒の間sleepします。nには表示させたい部分にあわせて以下の定数値を渡します。intervalのデフォルト値は0秒です。 複数の部分を同時に表示したい場合は足し算(あるいは引き算)をします。

led.write(SegLED::L + SegLED::R + SegLED::BTM)

write_val(val, interval = 0)
LEDを表示しinterval秒の間sleepします。valは0-9, A-Fまでの16進数値を渡します。intervalのデフォルト値は0秒です。
putc(c, interval = 0)
LEDを表示しinterval秒の間sleepします。cにはASCIIコード(str.chrしたもの)を渡します。字によってはきれいに表示されません。intervalのデフォルト値は0秒です。
clear(interval = 0)
LEDをクリアしてinterval秒の間sleepします。intervalのデフォルト値は0秒です。
test
LEDのテストモードです。これを実行すると強制終了させなければなりません。

このメソッドを使うことはないでしょう。

segled-utils.rb - お手軽ユーティリティモジュール(SegLEDUtils)

SegLEDクラス自体とても間単にLED操作を行うことができますが、LED操作は典型的な処理手順が多いので、そのような部分をメソッドとして括りだしてライブラリ化したものがsegled-utils.rbです。大体のことはこちらでできてしまいます。

基本的な使用方法

1秒毎にH, E, L, L, Oを順番に表示します。

require 'segled-utils'

SegLEDUtils.init
SegLEDUtils.run "HELLO"

これだけです。これだけで、Ctrl+Cを使って強制終了させたときにLEDをすべて表示させないようにして終了してくれます。 (SegLEDの一番最初の使用方法のところで述べた方法ではここまでの処理はしません)

APIリファレンス(SegLEDUtilsモジュール)

モジュールメソッド

SegLEDUtils.init(signal = ["SIGINT", "SIGTERM", "SIGHUP"])
初期化します。といっても実際はトラップ発生時の処理を登録するだけです。signalは配列で受け取るトラップを指定します。省略時はSIGINT,SIGTERM,SIGHUPが対象となります。
SegLEDUtils.init_d(signal = ["SIGINT", "SIGTERM", "SIGHUP"])
SegLEDUtils.initと同様にトラップ発生時の処理を登録し、また、スクリプトをデーモン化します。signalは配列で受け取るトラップを指定します。省略時はSIGINT,SIGTERM,SIGHUPが対象となります。
SegLEDUtils.run(val, interval = 0.1, flush_interval = 0)
引数に基づいてLEDを動作させます(無限ループ)。valはStringかArrayのどちらかを与えることができます。
  • Stringの場合、valによって与えられた文字列を1文字ずつinterval秒間表示します。 1文字表示するとflash_interval秒間LEDをクリアし次の文字に移ります。intervalの初期値は0.1秒, flash_intervalのデフォルト値は0秒です。 valはASCII文字列のみ指定可能ですが、字によってはきれいに表示されません。
  • Arrayの場合、valはwrite(n)に渡す定数値の配列にします。valによって与えられた 定数値を1つずつintervalの間表示します。1要素分表示すると、flash_intervalの間LEDをクリアし次の文字に移ります。intervalの初期値は0.1秒, flash_intervalのデフォルト値は0秒です。

SegLEDUtils.init, SegLEDUtils.init_dはどちらか一つを使います。また、SegLEDUtils.runに相当する機能は独自実装した場合でも、SegLEDUtils.init, SegLEDUtils.init_dのどちらかを使う、といったこともできます。

runled(おまけ)

samplesディレクトリにrunledというShell Scriptがあります。これは、もともとSegment LED用に用意されている/etc/init.d/runledの改造版で本ライブラリを使ったスクリプト(デーモン版)のstart,stopができるようになっています。先頭の部分をちょこちょこっといじる必要がありますが、せっかくですので自作したスクリプトをOpenBlockSSの起動時から使えるようにしてみてはいかがでしょうか。

更新日時:2003/07/21 19:09:02
キーワード:
参照:[SegLED]