2016a/Member/takutaka11/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*はじめに [#s5e738e0]
今回の課題は光センサーを使ってロボをある地点からある地点へと&br;
移動させるものでした。&br;
僕は下の写真のAからBへ移動するロボを作成しました。
#ref(2016a-mission2.png)
*ロボの説明 [#a4ef3e83]
1枚目の写真がロボの本体で2枚目の写真が光センサーです。&br;
この光センサーから光が照射され跳ね返ってくる光の加減によって&br;
黒い線と白い所を見分けさせています。
#ref(IMG_1111.jpg)
#ref(IMG_1112.jpg)
さらに下の写真がセンサーでここから光を照射していて、また光を感知しています。
#ref(IMG_1113.jpg)
*プログラミングの説明 [#s2c4c487]
***定義について [#d2d1b32d]
#define BLACK 34 //光の強さ
#define WHITE 70 //光の強さ
#define LEFT OnFwd(OUT_B,40);OnRev(OUT_C,20); //左回転
#define RIGHT OnFwd(OUT_C,40);OnRev(OUT_B,20); //右回転
#define nMAX 210
#define short_break Off(OUT_BC);PlaySound(SOUND_CLICK);Wait(1000) //1秒間止まるまた,音を鳴らす
#define STEP 1
#define GO OnFwd(OUT_BC,40);Wait(200);Off(OUT_BC); //直進
#define GO1 OnFwd(OUT_BC,40);Wait(1000);Off(OUT_BC);//直進
#define GO2 OnFwd(OUT_BC,40);Wait(1100);//直進
#define LEFT2 OnFwd(OUT_B,40);OnRev(OUT_C,20);Wait(500);//左回転
#define RIGHT2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(500);右回転
#define TURN OnFwd(OUT_C,40);OnRev(OUT_B,40);Wait(650);Off(OUT_BC);//右回転
#define TURN2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(200);Off(OUT_BC);//右回転
***サブルーチンについて [#b3ebd0f6]
sub normal()
{
SetSensorLight(S2); //光センサーを2に
int nOnline=0;
int k=0;
while(k==0){
while(nOnline < nMAX){
if (SENSOR_2<BLACK) { //センサーが定義した(BLACK 34)値よりも小さければ次の行動
RIGHT;
nOnline++; //カウントを増やす
} else
if (SENSOR_2<WHITE) { //センサーが定義した(WHITE 70)値よりも大きければ次の行動
LEFT;
nOnline=0; //カウントをリセット
}
Wait(STEP);
}
short_break; //止まるまた、音を鳴らす
k++; //カウントを増やす
nOnline=0; //カウントをリセット
}
}
sub normal2()
{
SetSensorLight(S2);
int nOnline=0;
int k=0;
while(k==0){
while(nOnline < nMAX){
if (SENSOR_2<BLACK) { //センサーが定義した(BLACK 34)値よりも小さければ次の行動
LEFT;
nOnline++; //カウントを増やす
} else
if (SENSOR_2<WHITE) { //センサーが定義した(WHITE 70)値よりも大きければ次の行動
RIGHT;
nOnline=0; //カウントをリセット
}
Wait(STEP);
}
short_break; //止まるまた、音を鳴らす
k++; //カウントを増やす
nOnline=0; //カウントをリセット
}
}
***プログラム [#x87caf9e]
task main()
{
normal2(); //交差点を識別
GO1; //直進
normal(); //交差点を識別
GO; //直進
normal();//交差点を識別
GO;//直進
normal (); //交差点を識別
TURN; //右に回転
TURN2; //普通よりも小さく右に回転
GO; //直進
normal(); //交差点を識別
LEFT2; //左に回転
normal(); //交差点を識別
GO2; //直進
Off(OUT_BC);
}
*交差点の識別 [#j2cb07a6]
黒い線にのって200回黒を判断したら交差点と認識
*まとめ [#ef68ce69]
今回は課題1では使わなかったサブルーチンなども出てきて&br;
難しい点もあったが、なんとか期限に終わらせることもできた。&br;
また、前回指摘された画像の大きさなども、今回は早めに対処して&br;
見やすいページを作ることができたと思う。&br;
しかし、まだまだ改善点があるかもしれないので、今回の課題で学んだことを&br;
次に活かしていきたいと思う。
終了行:
#contents
*はじめに [#s5e738e0]
今回の課題は光センサーを使ってロボをある地点からある地点へと&br;
移動させるものでした。&br;
僕は下の写真のAからBへ移動するロボを作成しました。
#ref(2016a-mission2.png)
*ロボの説明 [#a4ef3e83]
1枚目の写真がロボの本体で2枚目の写真が光センサーです。&br;
この光センサーから光が照射され跳ね返ってくる光の加減によって&br;
黒い線と白い所を見分けさせています。
#ref(IMG_1111.jpg)
#ref(IMG_1112.jpg)
さらに下の写真がセンサーでここから光を照射していて、また光を感知しています。
#ref(IMG_1113.jpg)
*プログラミングの説明 [#s2c4c487]
***定義について [#d2d1b32d]
#define BLACK 34 //光の強さ
#define WHITE 70 //光の強さ
#define LEFT OnFwd(OUT_B,40);OnRev(OUT_C,20); //左回転
#define RIGHT OnFwd(OUT_C,40);OnRev(OUT_B,20); //右回転
#define nMAX 210
#define short_break Off(OUT_BC);PlaySound(SOUND_CLICK);Wait(1000) //1秒間止まるまた,音を鳴らす
#define STEP 1
#define GO OnFwd(OUT_BC,40);Wait(200);Off(OUT_BC); //直進
#define GO1 OnFwd(OUT_BC,40);Wait(1000);Off(OUT_BC);//直進
#define GO2 OnFwd(OUT_BC,40);Wait(1100);//直進
#define LEFT2 OnFwd(OUT_B,40);OnRev(OUT_C,20);Wait(500);//左回転
#define RIGHT2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(500);右回転
#define TURN OnFwd(OUT_C,40);OnRev(OUT_B,40);Wait(650);Off(OUT_BC);//右回転
#define TURN2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(200);Off(OUT_BC);//右回転
***サブルーチンについて [#b3ebd0f6]
sub normal()
{
SetSensorLight(S2); //光センサーを2に
int nOnline=0;
int k=0;
while(k==0){
while(nOnline < nMAX){
if (SENSOR_2<BLACK) { //センサーが定義した(BLACK 34)値よりも小さければ次の行動
RIGHT;
nOnline++; //カウントを増やす
} else
if (SENSOR_2<WHITE) { //センサーが定義した(WHITE 70)値よりも大きければ次の行動
LEFT;
nOnline=0; //カウントをリセット
}
Wait(STEP);
}
short_break; //止まるまた、音を鳴らす
k++; //カウントを増やす
nOnline=0; //カウントをリセット
}
}
sub normal2()
{
SetSensorLight(S2);
int nOnline=0;
int k=0;
while(k==0){
while(nOnline < nMAX){
if (SENSOR_2<BLACK) { //センサーが定義した(BLACK 34)値よりも小さければ次の行動
LEFT;
nOnline++; //カウントを増やす
} else
if (SENSOR_2<WHITE) { //センサーが定義した(WHITE 70)値よりも大きければ次の行動
RIGHT;
nOnline=0; //カウントをリセット
}
Wait(STEP);
}
short_break; //止まるまた、音を鳴らす
k++; //カウントを増やす
nOnline=0; //カウントをリセット
}
}
***プログラム [#x87caf9e]
task main()
{
normal2(); //交差点を識別
GO1; //直進
normal(); //交差点を識別
GO; //直進
normal();//交差点を識別
GO;//直進
normal (); //交差点を識別
TURN; //右に回転
TURN2; //普通よりも小さく右に回転
GO; //直進
normal(); //交差点を識別
LEFT2; //左に回転
normal(); //交差点を識別
GO2; //直進
Off(OUT_BC);
}
*交差点の識別 [#j2cb07a6]
黒い線にのって200回黒を判断したら交差点と認識
*まとめ [#ef68ce69]
今回は課題1では使わなかったサブルーチンなども出てきて&br;
難しい点もあったが、なんとか期限に終わらせることもできた。&br;
また、前回指摘された画像の大きさなども、今回は早めに対処して&br;
見やすいページを作ることができたと思う。&br;
しかし、まだまだ改善点があるかもしれないので、今回の課題で学んだことを&br;
次に活かしていきたいと思う。
ページ名: