サブゴール1レポート
1.タッチセンサを使った課題
ソース
program test {
#include
#include
#include
#include
sensor touch1 on 1
touch1 is switch as boolean
event tPress_touch1EventPress when touch1.pressed
main {
ext InterfaceType "kRoverBot"
rcx_ClearTimers
bbs_GlobalReset([A B C])
start TouchWatcher0
rcx_Priority( 8)
trigger tPress_touch1EventPress
try {
forever {
bb_Forward(A, C, 200)
bb_SpinLeft(A, C, 180)
}
} retry on fail
}
watcher TouchWatcher0 monitor tPress_touch1EventPress
{
rcx_Priority( 3 )
try {
bb_Backward(A, C, 100)
bb_PlayNote( 698, 20, 20 )
bb_RandomMove(A, C, 200 )
} restart on fail
} restart on event
}
フローチャート
リピート無限開始→もしタッチセンサが押されたら
↓ ↓
前進2秒 後退1秒
↓ ↓
左スピン1.8秒 音の再生(ファ#)
↓ ↓
リピート無限終了 ランダムな動き2秒
考察
競技2等に使う場合、タッチセンサが押された時、後退し方向転換する必要があるがこの課題では考えない事にした。
約左スピン1.8秒でマシンが逆向きに変わるが、厳密ではないので追求していく必要がある。
2.光センサを使った課題
ソース
program test {
#include
#include
#include
#include
sensor light1 on 1
light1 is light as percent
event lDark_light1EventLow when light1 < 35
main {
ext InterfaceType "kRoverBot"
rcx_ClearTimers
bbs_GlobalReset([A B C])
start LightWatcher0
rcx_Priority( 8)
trigger lDark_light1EventLow
try {
forever {
bb_Forward(A, C, 200)
bb_ZigZag(A, C, 1, 50 )
}
} retry on fail
}
watcher LightWatcher0 monitor lDark_light1EventLow
{
rcx_Priority( 4 )
try {
bb_Backward(A, C, 100)
bb_Shake(A, C, 1, 50 )
} restart on fail
} restart on event
}
フローチャート
リピート無限開始→もしライト<35
↓ ↓
前進2秒 後退1秒
↓ ↓
ジグザグ1回転 シェイク1回転
↓
リピート無限終了
考察
はじめから設定されている、光センサの値を50で反応するようにしたら、緑色でも反応してしまった。
そこで、黒色の光センサの反応ラインを調べてみると、32、33だったので35未満で反応するようにした。
3.角度センサを使った課題
ソース
program test {
#include
#include
#include
#include
sensor rotation2 on 2
rotation2 is rotation as angle
event equal_rotation2EventEqual when rotation2 = 200
main {
ext InterfaceType "kRoverBot"
rcx_ClearTimers
bbs_GlobalReset([A B C])
start RotationWatcher0
rcx_Priority( 8)
trigger equal_rotation2EventEqual
try {
bb_Forward(A, C, 2000)
} retry on fail
}
watcher RotationWatcher0 monitor equal_rotation2EventEqual
{
rcx_Priority( 5 )
try {
off [ A B C ]
stop tasks
} restart on fail
} restart on event
}
フローチャート
前進20秒→もし回転数=200
↓
エンジンオフA,B,C
↓
プログラムの終了
考察
ヘルプから、1回転ときには角度センサの値が16増加する事がわかった。プログラムでは、200になると
止めているけれど10回転させた後停止させるには160にすれば問題ないだろう。
感想
実際、実験できた時間はRCXの通信が悪くて何回もインストールしたので短くなってしまった。もっと
手際よくできればよかった。CDの説明も足りないような気がする。
topページへ