2016a/Member/katosato/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*はじめに [#f9c16381]
紙コップをC地点、D地点にそれぞれ3個(合計6個)置き、C地点に...
D地点に置いた紙コップにはDを紙コップの底面にマークします。~
最終的に黒線で囲まれた輪の中にC地点からの紙コップとD地点...
*ロボットについて [#q7bdba58]
#ref(IMG_1.jpg)
#ref(IMG_2.jpg)
*プログラム [#g9684b70]
-定義
#define roll_left OnRev(OUT_A); OnFwd(OUT_C); //左回転
#define turn_left OnFwd(OUT_C); Off(OUT_A); //左旋回
#define go OnFwd(OUT_A); OnFwd(OUT_C); //前進
#define turn_right OnFwd(OUT_A); Off(OUT_C); //右旋回
#define roll_right OnFwd(OUT_A); OnRev(OUT_C); //右回転
#define back OnRev(OUT_A); OnRev(OUT_C); Wait(200); Off(...
#define top OnRev(OUT_C); OnFwd(OUT_A); Wait(CROSS_TIME)...
#define left OnRev(OUT_A); OnFwd(OUT_C); Wait(20);
#define right OnRev(OUT_C); OnFwd(OUT_A); Wait(80); OnFw...
-サブルーチン~
sub line_l(){
int ch=0; //ループ脱出用変数
ClearTimer(0); //交差点判別用のタイマー初期化
ClearTimer(1); //交差点誤判別防止用のタイマー初期化
while(ch==0) //chが0の時はループを続ける
{
if(SENSOR_2 > 53) //白部分 右回転
{
ClearTimer(0); //黒部分ではないので交差点...
roll_right;
}
else if(SENSOR_2 > 52) //弱白部分 右旋回
{
ClearTimer(0); //黒部分ではないので交差点...
turn_right;
}
else if(SENSOR_2 > 44) //境界部分 直進
{
ClearTimer(0); //黒部分ではないので交差点...
go;
}
else if(SENSOR_2 > 41) //弱黒部分 左旋回
{
ClearTimer(0); //黒部分ではないので交差点...
turn_left;
}
else{ //黒部分 左回転
roll_left;
}
if(FastTimer(0)>CROSS_TIME&&FastTimer(1)>l_time...
Off(OUT_AC); //車輪を止める
PlaySound(SOUND_UP); //音を鳴らす
Wait(100); //1秒待つ
ch=1; //ループ脱出の為にchを1にする
}
Wait(1); //0.01秒待つ
}
}
sub line_r(){
int ch=0; //ループ脱出用変数
ClearTimer(0); //交差点判別用のタイマー初期化
ClearTimer(1); //交差点誤判別防止用のタイマー初期化
while(ch==0) //chが0の時はループを続ける
{
if(SENSOR_2 > 53) //白部分 左回転
{
ClearTimer(0); //黒部分ではないので交差点...
roll_left;
}
else if(SENSOR_2 > 52) //弱白部分 左旋回
{
ClearTimer(0); //黒部分ではないので交差点...
turn_left;
}
else if(SENSOR_2 > 44) //境界部分 直進
{
ClearTimer(0); //黒部分ではないので交差点...
go;
}
else if(SENSOR_2 > 41) //弱黒部分 右旋回
{
ClearTimer(0); //黒部分ではないので交差点...
turn_right;
}
else{ //黒部分 右回転
roll_right;
}
if(FastTimer(0)>CROSS_TIME&&FastTimer(1)>l_time...
Off(OUT_AC); //車輪を止める
PlaySound(SOUND_UP); //音を鳴らす
Wait(100); //1秒待つ
ch=1; //ループ脱出の為にchを1にする
}
Wait(1); //0.01秒待つ
}
}
-交差点判別~
if(FastTimer(0)>CROSS_TIME&&FastTimer(1)>l_time){ //交...
Off(OUT_AC); //車輪を止める
PlaySound(SOUND_UP); //音を鳴らす
Wait(100); //1秒待つ
ch=1; //ループ脱出の為にchを1にする
}
ClearTimer(0);
if(FastTimer(0)>CROSS_TIME)
if(FastTimer(0)>CROSS_TIME&&FastTimer(1)>l_time)
-コップの回収~
sub cup(){
OnRev(OUT_B); //アームを下す
Wait(50);
Off(OUT_B);
OnFwd(OUT_AC); //前進
while(SENSOR_1<42); //光センサーがコップを認識す...
Off(OUT_AC); //停止
OnFwd(OUT_B); //アームを上げる
Wait(50);
Off(OUT_B);
}
-最後の処理~
sub last(){
OnRev(OUT_C); //姿勢をまっすぐにする
OnFwd(OUT_A);
Wait(40);
OnFwd(OUT_AC); //前進
Wait(200); //2秒間待つ
Off(OUT_AC); //停止
ClearTimer(0); //交差点判別用のタイマー初期化(初...
ClearTimer(1); //交差点誤判別防止用のタイマー初期...
}
-本文~
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_LIGHT);
OnFwd(OUT_AC);
Wait(60);
line_l();
left;
l_time=400;
line_l();
right;
l_time=100;
balance_l();
cup();
bottom;
turn();
balance_r();
cup();
bottom;
turn();
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(20);
balance_r();
cup();
bottom;
turn();
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(20);
balance_r();
cup();
bottom;
bottom;
bottom;
bottom;
l_time=200;
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(50);
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(30);
line_l();
left;
line_l();
left;
line_l();
OnFwd(OUT_AC);
Wait(50);
Off(OUT_AC);
OnRev(OUT_B);
Wait(50);
Off(OUT_B);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(100);
OnRev(OUT_AC);
Wait(200);
Off(OUT_AC);
}
*プログラムの説明 [#j8118502]
僕たちの班で作ったコースでは、おおよそ線の白部分が数値で5...
が44〜52、やや黒が41〜44、黒部分が41未満と計測された。よ...
た。~
今回は時間によってライントレースするようになっている。~
交差点を判別するタイマーとして、FastTimer(0)がある。光セ...
にカウントをして、0.4秒以上続いたら交差点として判別する。...
また今回はコースが複雑なため、交差点をロボットが間違って...
別のタイマーを用いた。小さなカーブを交差点として誤判別し...
#br
交差点は黒部分が長く続いた時に交差点として判別するように...
~
~
*感想 [#wfec7bfc]
今回の課題では自分はあまり班に対して貢献できませんでした。~
一つには班に元々プログラミングに関して詳しい方がいたため...
不足を痛感しました。~
近いうちに小学校でもプログラミングの授業が入ってくるそう...
利用して深く学んでいきたいと思いました。~
自分は今まで正しくプログラミング出来れば、機械も正しく動...
うも違うようで、前期の約半年間ロボティクス入門ゼミを取っ...
取られたことに新鮮な驚きを感じました。~
終了行:
#contents
*はじめに [#f9c16381]
紙コップをC地点、D地点にそれぞれ3個(合計6個)置き、C地点に...
D地点に置いた紙コップにはDを紙コップの底面にマークします。~
最終的に黒線で囲まれた輪の中にC地点からの紙コップとD地点...
*ロボットについて [#q7bdba58]
#ref(IMG_1.jpg)
#ref(IMG_2.jpg)
*プログラム [#g9684b70]
-定義
#define roll_left OnRev(OUT_A); OnFwd(OUT_C); //左回転
#define turn_left OnFwd(OUT_C); Off(OUT_A); //左旋回
#define go OnFwd(OUT_A); OnFwd(OUT_C); //前進
#define turn_right OnFwd(OUT_A); Off(OUT_C); //右旋回
#define roll_right OnFwd(OUT_A); OnRev(OUT_C); //右回転
#define back OnRev(OUT_A); OnRev(OUT_C); Wait(200); Off(...
#define top OnRev(OUT_C); OnFwd(OUT_A); Wait(CROSS_TIME)...
#define left OnRev(OUT_A); OnFwd(OUT_C); Wait(20);
#define right OnRev(OUT_C); OnFwd(OUT_A); Wait(80); OnFw...
-サブルーチン~
sub line_l(){
int ch=0; //ループ脱出用変数
ClearTimer(0); //交差点判別用のタイマー初期化
ClearTimer(1); //交差点誤判別防止用のタイマー初期化
while(ch==0) //chが0の時はループを続ける
{
if(SENSOR_2 > 53) //白部分 右回転
{
ClearTimer(0); //黒部分ではないので交差点...
roll_right;
}
else if(SENSOR_2 > 52) //弱白部分 右旋回
{
ClearTimer(0); //黒部分ではないので交差点...
turn_right;
}
else if(SENSOR_2 > 44) //境界部分 直進
{
ClearTimer(0); //黒部分ではないので交差点...
go;
}
else if(SENSOR_2 > 41) //弱黒部分 左旋回
{
ClearTimer(0); //黒部分ではないので交差点...
turn_left;
}
else{ //黒部分 左回転
roll_left;
}
if(FastTimer(0)>CROSS_TIME&&FastTimer(1)>l_time...
Off(OUT_AC); //車輪を止める
PlaySound(SOUND_UP); //音を鳴らす
Wait(100); //1秒待つ
ch=1; //ループ脱出の為にchを1にする
}
Wait(1); //0.01秒待つ
}
}
sub line_r(){
int ch=0; //ループ脱出用変数
ClearTimer(0); //交差点判別用のタイマー初期化
ClearTimer(1); //交差点誤判別防止用のタイマー初期化
while(ch==0) //chが0の時はループを続ける
{
if(SENSOR_2 > 53) //白部分 左回転
{
ClearTimer(0); //黒部分ではないので交差点...
roll_left;
}
else if(SENSOR_2 > 52) //弱白部分 左旋回
{
ClearTimer(0); //黒部分ではないので交差点...
turn_left;
}
else if(SENSOR_2 > 44) //境界部分 直進
{
ClearTimer(0); //黒部分ではないので交差点...
go;
}
else if(SENSOR_2 > 41) //弱黒部分 右旋回
{
ClearTimer(0); //黒部分ではないので交差点...
turn_right;
}
else{ //黒部分 右回転
roll_right;
}
if(FastTimer(0)>CROSS_TIME&&FastTimer(1)>l_time...
Off(OUT_AC); //車輪を止める
PlaySound(SOUND_UP); //音を鳴らす
Wait(100); //1秒待つ
ch=1; //ループ脱出の為にchを1にする
}
Wait(1); //0.01秒待つ
}
}
-交差点判別~
if(FastTimer(0)>CROSS_TIME&&FastTimer(1)>l_time){ //交...
Off(OUT_AC); //車輪を止める
PlaySound(SOUND_UP); //音を鳴らす
Wait(100); //1秒待つ
ch=1; //ループ脱出の為にchを1にする
}
ClearTimer(0);
if(FastTimer(0)>CROSS_TIME)
if(FastTimer(0)>CROSS_TIME&&FastTimer(1)>l_time)
-コップの回収~
sub cup(){
OnRev(OUT_B); //アームを下す
Wait(50);
Off(OUT_B);
OnFwd(OUT_AC); //前進
while(SENSOR_1<42); //光センサーがコップを認識す...
Off(OUT_AC); //停止
OnFwd(OUT_B); //アームを上げる
Wait(50);
Off(OUT_B);
}
-最後の処理~
sub last(){
OnRev(OUT_C); //姿勢をまっすぐにする
OnFwd(OUT_A);
Wait(40);
OnFwd(OUT_AC); //前進
Wait(200); //2秒間待つ
Off(OUT_AC); //停止
ClearTimer(0); //交差点判別用のタイマー初期化(初...
ClearTimer(1); //交差点誤判別防止用のタイマー初期...
}
-本文~
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);
SetSensor(SENSOR_2, SENSOR_LIGHT);
OnFwd(OUT_AC);
Wait(60);
line_l();
left;
l_time=400;
line_l();
right;
l_time=100;
balance_l();
cup();
bottom;
turn();
balance_r();
cup();
bottom;
turn();
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(20);
balance_r();
cup();
bottom;
turn();
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(20);
balance_r();
cup();
bottom;
bottom;
bottom;
bottom;
l_time=200;
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(50);
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(30);
line_l();
left;
line_l();
left;
line_l();
OnFwd(OUT_AC);
Wait(50);
Off(OUT_AC);
OnRev(OUT_B);
Wait(50);
Off(OUT_B);
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(100);
OnRev(OUT_AC);
Wait(200);
Off(OUT_AC);
}
*プログラムの説明 [#j8118502]
僕たちの班で作ったコースでは、おおよそ線の白部分が数値で5...
が44〜52、やや黒が41〜44、黒部分が41未満と計測された。よ...
た。~
今回は時間によってライントレースするようになっている。~
交差点を判別するタイマーとして、FastTimer(0)がある。光セ...
にカウントをして、0.4秒以上続いたら交差点として判別する。...
また今回はコースが複雑なため、交差点をロボットが間違って...
別のタイマーを用いた。小さなカーブを交差点として誤判別し...
#br
交差点は黒部分が長く続いた時に交差点として判別するように...
~
~
*感想 [#wfec7bfc]
今回の課題では自分はあまり班に対して貢献できませんでした。~
一つには班に元々プログラミングに関して詳しい方がいたため...
不足を痛感しました。~
近いうちに小学校でもプログラミングの授業が入ってくるそう...
利用して深く学んでいきたいと思いました。~
自分は今まで正しくプログラミング出来れば、機械も正しく動...
うも違うようで、前期の約半年間ロボティクス入門ゼミを取っ...
取られたことに新鮮な驚きを感じました。~
ページ名: