2014a/Member/kiyo/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2014a/Member]]
#contents
*メンバー [#q3493514]
清原 雅司 (kiyo)
須藤 海志 (sudo)
*課題 [#ab398598]
[[2014a/Mission1]]
*ロボット本体 [#y087f47f]
&ref(2014a/Member/kiyo/Mission1/image1.jpg);&ref(2014a/Me...
今まで使っていたドライブベースにセンサーをつけたまんまモ...
&ref(2014a/Member/kiyo/Mission1/pic10.jpeg);
アームに付いたかごを下ろすことでピンポン玉を取ります。衝...
**プログラム[#z7bdda83]
みんなと同じことをやるのはつまらないと思い、黒い線の縁で...
線上でトレースして走るようにプログラミングしました。
結果、交差点でのプログラムが必要ないので割と単純なプログ...
しかしこれだと交差点のプログラムを入れていないので評価が...
と途中で思いましたがこのまま続けることにしました。
#define BLACK 40 // 黒と認識する閾値を"40"とする。
#define turn_right OnFwd(OUT_A);OnRev(OUT_C); // 左のタ...
#define turn_left OnFwd(OUT_C);OnRev(OUT_A); // 右のタイ...
#define right_time 20 // 右に回転する時間を"20"センチ秒...
#define down OnRev(OUT_B);Wait(12);Off(OUT_B); // アーム...
#define step1 358 // スタートからピンポン玉をとる直前ま...
#define step2 2470 // ピンポン球をとった後からシュートす...
sub go() // "進む"というサブルーチンのプログラム。
{
if (SENSOR_2 < BLACK) { // SENSOR_2の値が黒の閾値...
OnFwd(OUT_AC); // 左右のタイヤの両方を前に回し前...
}
else if (SENSOR_2 > BLACK){ // SENSOR_2の値が黒の...
turn_right; // 右回転を始める。
ClearTimer(1); // タイマー1を0にする。
while (FastTimer(1) <= right_time){ // タイマー1...
if (SENSOR_2 < BLACK){ // SENSOR_2の値が黒の閾...
Wait(15); // 15センチ秒だけさらに回転し、
Off(OUT_AC); // 左右のタイヤを止める。
}
}
turn_left; // 黒と認識せずに右に回転する時間をタ...
until (SENSOR_2 < BLACK); // SENSOR_2の値が黒の...
Float(OUT_AC); // 左右のタイヤを浮かしながら止...
}
}
sub get() // "ピンポン球をとる"というサブルーチンのプロ...
{
Off(OUT_AC);Wait(20); // 左右のタイヤを止め、20セン...
turn_right;Wait(20); // 右に回転して角度を調整する。
Off(OUT_AC);Wait(20); // 左右のタイヤを止め、20セン...
down; // アームを下げてピンポン球をとる。
}
sub shoot() // "ピンポン球をシュートする"というサブルー...
{
Off(OUT_AC);Wait(100); // 左右のタイヤを止め、1秒待...
turn_right; // 右に回転してゴールを狙う。
Wait(55); // 55センチ秒回転する。
Off(OUT_AC);Wait(100); // 左右のタイヤを止め、1秒待...
OnFwd(OUT_ABC); // 左右のタイヤを前に回し前進しなが...
Wait(11); // 11センチ秒待つ。
Off(OUT_ABC); // 全てのモーターを止める。
}
task main() // メインのプログラム。
{
OnFwd(OUT_B);Wait(10);Off(OUT_B); // 初めにアームを...
SetSensor(SENSOR_2, SENSOR_LIGHT); // 光センサーをSE...
ClearTimer(0); // タイマー0を0にする。
while (FastTimer(0) <= step1) { // step1までの間、
Off(OUT_B); // アームを保持する。
go(); // "進む"
}
get(); // "ピンポン球をとる"
ClearTimer(0); // タイマー0を0にする。
while (FastTimer(0) <= step2) { // step2までの間、
go(); // "進む"
}
shoot(); // "ピンポン球をシュートする"
}
**工夫点 [#r61c7509]
++黒い線上では直進すること。➡︎これにより、...
++線上から外れたときは、まず右に回転して、それでも線上に...
++step1の時間設定は、ピンポン玉をとるまでに、交差点のよう...
++step2の時間設定は、ピンポン玉を離した時にピンポン玉がゴ...
**反省 [#eaa5735e]
++大きく首を振って黒い道を探すプログラムになったので、ブ...
終了行:
[[2014a/Member]]
#contents
*メンバー [#q3493514]
清原 雅司 (kiyo)
須藤 海志 (sudo)
*課題 [#ab398598]
[[2014a/Mission1]]
*ロボット本体 [#y087f47f]
&ref(2014a/Member/kiyo/Mission1/image1.jpg);&ref(2014a/Me...
今まで使っていたドライブベースにセンサーをつけたまんまモ...
&ref(2014a/Member/kiyo/Mission1/pic10.jpeg);
アームに付いたかごを下ろすことでピンポン玉を取ります。衝...
**プログラム[#z7bdda83]
みんなと同じことをやるのはつまらないと思い、黒い線の縁で...
線上でトレースして走るようにプログラミングしました。
結果、交差点でのプログラムが必要ないので割と単純なプログ...
しかしこれだと交差点のプログラムを入れていないので評価が...
と途中で思いましたがこのまま続けることにしました。
#define BLACK 40 // 黒と認識する閾値を"40"とする。
#define turn_right OnFwd(OUT_A);OnRev(OUT_C); // 左のタ...
#define turn_left OnFwd(OUT_C);OnRev(OUT_A); // 右のタイ...
#define right_time 20 // 右に回転する時間を"20"センチ秒...
#define down OnRev(OUT_B);Wait(12);Off(OUT_B); // アーム...
#define step1 358 // スタートからピンポン玉をとる直前ま...
#define step2 2470 // ピンポン球をとった後からシュートす...
sub go() // "進む"というサブルーチンのプログラム。
{
if (SENSOR_2 < BLACK) { // SENSOR_2の値が黒の閾値...
OnFwd(OUT_AC); // 左右のタイヤの両方を前に回し前...
}
else if (SENSOR_2 > BLACK){ // SENSOR_2の値が黒の...
turn_right; // 右回転を始める。
ClearTimer(1); // タイマー1を0にする。
while (FastTimer(1) <= right_time){ // タイマー1...
if (SENSOR_2 < BLACK){ // SENSOR_2の値が黒の閾...
Wait(15); // 15センチ秒だけさらに回転し、
Off(OUT_AC); // 左右のタイヤを止める。
}
}
turn_left; // 黒と認識せずに右に回転する時間をタ...
until (SENSOR_2 < BLACK); // SENSOR_2の値が黒の...
Float(OUT_AC); // 左右のタイヤを浮かしながら止...
}
}
sub get() // "ピンポン球をとる"というサブルーチンのプロ...
{
Off(OUT_AC);Wait(20); // 左右のタイヤを止め、20セン...
turn_right;Wait(20); // 右に回転して角度を調整する。
Off(OUT_AC);Wait(20); // 左右のタイヤを止め、20セン...
down; // アームを下げてピンポン球をとる。
}
sub shoot() // "ピンポン球をシュートする"というサブルー...
{
Off(OUT_AC);Wait(100); // 左右のタイヤを止め、1秒待...
turn_right; // 右に回転してゴールを狙う。
Wait(55); // 55センチ秒回転する。
Off(OUT_AC);Wait(100); // 左右のタイヤを止め、1秒待...
OnFwd(OUT_ABC); // 左右のタイヤを前に回し前進しなが...
Wait(11); // 11センチ秒待つ。
Off(OUT_ABC); // 全てのモーターを止める。
}
task main() // メインのプログラム。
{
OnFwd(OUT_B);Wait(10);Off(OUT_B); // 初めにアームを...
SetSensor(SENSOR_2, SENSOR_LIGHT); // 光センサーをSE...
ClearTimer(0); // タイマー0を0にする。
while (FastTimer(0) <= step1) { // step1までの間、
Off(OUT_B); // アームを保持する。
go(); // "進む"
}
get(); // "ピンポン球をとる"
ClearTimer(0); // タイマー0を0にする。
while (FastTimer(0) <= step2) { // step2までの間、
go(); // "進む"
}
shoot(); // "ピンポン球をシュートする"
}
**工夫点 [#r61c7509]
++黒い線上では直進すること。➡︎これにより、...
++線上から外れたときは、まず右に回転して、それでも線上に...
++step1の時間設定は、ピンポン玉をとるまでに、交差点のよう...
++step2の時間設定は、ピンポン玉を離した時にピンポン玉がゴ...
**反省 [#eaa5735e]
++大きく首を振って黒い道を探すプログラムになったので、ブ...
ページ名: