書式:
(setup-nxt
&optional
bluetooth
bluetooth-timeout
)
引数:
nil
以外なら,USB非接続時にbluetoothの接続を試みる.デフォルトは
nil
解説:
MINDSTORMS NXTとの接続を開始します.接続に成功した場合
t
を,失敗した場合
nil
を返します.
書式:
(destroy-nxt
)
解説:
MINDSTORMS NXTとの接続を終了します.返り値は常に
nil
です.
書式:
(play-tone
hz
duration
)
引数:
解説:
hz
で指定した高さの音を
duration
で指定した長さだけ鳴らします.
書式:
(play
string
)
引数:
解説:
与えられた楽譜に従って音楽を演奏します.以前に実行したplay関数の演奏がまだ残っている場合は,その終了を待ってから演奏を開始します
(play-tone関数による再生は中断されます)
.楽譜は以下のコマンドを並べた文字列で記述し,それらのコマンドが順に解釈実行されます.
CDEFGAB
]{[
+-
]}{
beat
}{
.
}:
C
,
D
,
E
,
F
,
G
,
A
,
B
がそれぞれ,ドレミファソラシに対応します.
‘
+
’
,
‘
-
’
はそれぞれシャープ(半音上げ),フラット(半音下げ)に対応します.整数
beat
で,何符音符かを指定できます
(省略した場合は,
L
コマンドで指定した長さ)
.
‘
.
’
は付点に対応します.例えば
“
C+8.
”
は,ド#の付点八分音符です.
R
{
beat
}{
.
}:
R1
”
は全休符です.
O
{
octave
}:
O4
”
になります.変更は,以降のplay関数にも持ち越されます.
L
{
length
}:
L4
”
になります.変更は,以降のplay関数にも持ち越されます.
T
{
tempo
}:
T120
”
になります.変更は,以降のplay関数にも持ち越されます.
書式:
(initialize-player
)
解説:
play関数の
‘
O
’
,
‘
L
’
,
‘
T
’
コマンドで変更されたパラメータを初期値に戻します.
(play "OLT") = (play "O4L4T120")
を実行するのとほぼ同じです.
書式:
(playing?
)
解説:
NXTがplay関数による演奏中なら
t
,そうでなければ
nil
を返します.
書式:
(keep-alive
get-sleep-time
)
引数:
nil
以外を与えるとスリープまでの時間を獲得する.デフォルトは
nil
.
解説:
NXTは一定時間ボタンの操作をしないと自動的に電源が切れる
(スリープする)
ようになっていますが,この関数はスリープまでの時間をリセットします.
get-sleep-time
に
nil
以外を与えると,返り値として,スリープするまでの時間をms単位で返します.
nil
の場合は-1を返します.
(スリープまでの時間は,本体のボタン操作により変更可能です)
書式:
(battery
)
解説:
NXTのバッテリーレベルをmV
(ミリボルト)
単位で返します.
書式:
(motor
port
speed
&optional
distance
)
引数:
:a
,
:b
,
:c
または0〜2の整数で指定.
:max-speed
,
:off
,
:brake
のいずれかの記号.
nil
.
speed
が
:brake
以外のときのみ有効.デフォルトは
nil
.
解説:
モータに動作を指示します.
どのモータに指示を与えるかは,
:a
,
:b
,
:c
(それぞれ本体のA, B, Cポートに対応.)
で指定します.
:a
,
:b
,
:c
の代わりにそれぞれ0, 1, 2で指定することもできます.
speed
に整数を指定すると,指定したモータをその速さに設定します.指定できる整数の絶対値の最大値は,変数
*max-speed*
で定義されています.0の代わりに
:off
,
*max-speed*
の値の代わりに
:max-speed
を指定することもできます.
:brake
を指定するとモータにブレーキをかけます.
distance
に数を指定すると,その距離だけモータが回転した時点で自動的に停止します.単位はモータの回転角度
(度)
です.指定できる絶対値の最大は4294967295 (=#xFFFFFFFF)です.
speed
,
distance
には負の値を指定することもできます.速さや移動距離は絶対値が参照されますが,どちらか片方のみが負の値の場合は,回転方向が逆になります.
書式:
(motor-reset
)
解説:
全てのモータにブレーキをかけます.
(mapc #'(lambda (port) (motor port :brake)) '(:a :b :c))
を実行するのとほぼ等価です.
書式:
(motor-state
port
)
引数:
mortor
関数と同様.
解説:
指定したポートのモータの状態を,
(
(:status .
integer
)
(:port .
integer
)
(:power-set .
integer
)
(:mode .
integer
)
(:reg-mode .
integer
)
(:turn-ratio .
integer
)
(:runstate .
integer
)
(:tacho-limit .
integer
)
(:tacho-count .
integer
)
(:block-tacho-count .
integer
)
(:rotation-count .
integer
)
)
の形式の連想リストとして返します.それぞれの値の意味は,
Executable File and Bytecode Reference
の47ページ以降を参照してください.
書式:
(motor-running?
port
)
引数:
mortor
関数と同様.
解説:
指定したポートに接続されているモータが動いていれば
t
,止まっていれば
nil
を返します.
書式:
(light-on
port
)
引数:
解説:
指定した入力ポートをライトセンサー用にセットアップし,接続されているライトセンサーのLEDを点灯させます.
書式:
(light-off
port
)
引数:
解説:
指定した入力ポートをライトセンサー用にセットアップし,接続されているライトセンサーのLEDを消灯させます.
書式:
(light
port
)
引数:
解説:
指定した入力ポートに接続されているライントセンサーが感知している明るさを0〜1023の整数値で返します.数値が大きいほど明るいことを表わします.
実行前に,対応するポートに対してlight-on関数またはlight-off関数を実行しておく必要があります.
書式:
(rotation-on
port
)
引数:
解説:
指定した入力ポートをRCXの角度センサー用にセットアップします.
注記:
実装者の手元に角度センサーがないため,この関数の動作は未確認です.
書式:
(rotation
port
)
引数:
解説:
指定した入力ポートに接続されているRCXの角度センサーの値を0〜65535の範囲内の整数で返します.
実行前に,対応するポートに対してrotation-on関数を実行しておく必要があります.
注記:
実装者の手元に角度センサーがないため,この関数の動作は未確認です.
書式:
(temparature-on
port
&optional
scaling
)
引数:
:celcius
,
:fahrenheit
のいずれかを指定.デフォルトは
:celcius
.
解説:
指定した入力ポートを温度センサー用にセットアップします.
scaling
にはキーワード
:celcius
,
:fahrenheit
のいずれかを指定でき,temparature関数が返す値の単位がそれぞれ摂氏,華氏になります
(ただしいずれも0.1度単位)
.これら以外の値を指定するとエラーになります.
注記:
実装者の手元に温度センサーがないため,この関数の動作は未確認です.
書式:
(temparature
port
)
引数:
解説:
指定した入力ポートに接続されている温度センサーの値を返します.
実行前に,対応するポートに対してtemparature-on関数を実行しておく必要があります.
測定値の単位は,直近に実行したtemparature-on関数での指定に従い,範囲は,摂氏の場合-200〜700,華氏の場合-400〜1580の間です.
注記:
実装者の手元に温度センサーがないため,この関数の動作は未確認です.
書式:
(touch-on
port
)
引数:
解説:
指定した入力ポートをタッチセンサー用にセットアップします.
書式:
(touched?
port
)
引数:
解説:
指定した入力ポートに接続されているタッチセンサーが何かに触れていれば
t
,触れていなければ
nil
を返します.
実行前に,対応するポートに対してtouch-on関数を実行しておく必要があります.
書式:
(distance-on
port
)
引数:
解説:
指定した入力ポートを距離センサー用にセットアップします.
書式:
(distance
port
)
引数:
解説:
指定した入力ポートに接続されている距離センサーの値を0〜255の範囲内の整数で返します.
実行前に,対応するポートに対してdistance-on関数を実行しておく必要があります.
書式:
(sound-on
port
&optional
scaling
)
引数:
:db
,
:dba
のいずれかを指定.デフォルトは
:dba
.
解説:
指定した入力ポートをサウンドセンサー用にセットアップします.
scaling
にはキーワード
:db
,
:dba
のいずれかを指定でき,sound関数が返す値の単位がそれぞれdB,dBAになります.これら以外の値を指定するとエラーになります.
書式:
(sound
port
)
引数:
解説:
指定した入力ポートに接続されているサウンドセンサーの値を返します.
実行前に,対応するポートに対してsound関数を実行しておく必要があります.
測定値の単位は,直近に実行したsound関数での指定に従い,範囲は0〜1023です.
書式:
(wait-until
form
&optional
interval
)
引数:
*check-interval*
.
解説:
まず
interval
を評価し,その返り値の間隔毎に
form
を,返り値が
nil
以外になるまで繰り返し評価します.
最後に評価した
form
の返り値が,wait-until自身の返り値になります.
書式:
(with-watcher1
(
handler
&body
event
)
&body
body
)
引数:
解説:
ウォッチャースレッドを新たに作成・起動した後,
body
を実行します.ウォッチャースレッドは
body
の実行と並行して,
*check-interval*
の値
(秒)
の間隔ごとに
handler
を評価し,値が真であれば
event
を評価するということを繰り返します.
event
の実行中,本体
body
の実行は中断されます.
ウォッチャープロセスは,制御がwith-watcherを脱出する際
(非局所脱出の場合も含む)
にkillされます.
正常に
body
の実行が終了した場合は,その最後のフォームの評価結果がwith-watcher1の返り値になります.
書式:
(with-watcher
handler-list
&body
body
)
引数:
(
handler
event
)
である0要素以上のリスト.
handler
はLispフォーム.
event
はLispフォームのリスト.
解説:
複数のウォッチャープロセスを同時に指定できるwith-watcher1です.
handler-list
が空リストの場合は
(progn
body
)
1つ以上の要素を含む場合は,
(with-watcher1
handler
0
(with-watcher (
handler
1
handler
2
...
)
body
))
(ただし,
handler-list
=
(
handler
0
handler
1
...
)
)
と等価です.