2016a/Member/kaito/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
#contents
*今回の課題 [#vb924856]
今回の課題は下の画像の黒線の上を走ることでした
#ref(課題2.png)
私は画像の赤線で塗られている部分を走りました。~
言葉で説明すると~
C地点からA地点へ ~
C地点 → S左折 → P左折 → Q直進 → Q直進 → R右折 → P左折 → A...
また交差点では一秒静止し、音を鳴らすのがルールでした。~
私のルートでは交差点が6つありました。
*ロボットについて [#p47f6cd6]
今回のロボットは、前回の似顔絵ロボットを元に作成をしまし...
#ref(ライン2.JPG)
赤丸で囲んであるところに元はペンを上げ下げする機械があっ...
#ref(ライン6.5.jpg)
前から見るとこんな感じになります。~
この機械の工夫したところは、歯車をかませスピードを落とし...
それにより、交差点などではスピードが出すぎて、交差点だと...
*光センサーについて [#bae899bc]
光センサーは色の濃さを数値化し私たちに教えてくれるもので...
今回では、数字が大きいほど白く、数字が小さいほど黒くなり...
*プログラムについて [#y391940d]
今回のプログラムは多くの定義とサブルーチンを駆使していか...
今回私は、黒と白の中間の値を設定し、ロボはその値よりも大...
・定義したプログラム~
#define THRESHOLD 45 //この値は中間の色です
#define BRACK 37 //黒です
#define DARK 36 //さらに暗い黒です
#define WHITE 47 //白です
#define left Off(OUT_A); OnFwd(OUT_C); //左に曲がります
#define right OnFwd(OUT_A); Off(OUT_C); //右へ曲がり...
#define go_long OnFwd(OUT_AC);Wait(800);Off(OUT_AC); ...
#define go OnFwd(OUT_AC);Wait(200);Off(OUT_AC); //...
#define right_senkai OnFwd(OUT_C); OnRev(OUT_A); //...
#define left_senkai OnFwd(OUT_A);OnRev(OUT_C); //...
#define STEP 1 //0.01秒の間隔でロボが値...
#define short_break Off(OUT_AC);Wait(100); //交差点...
・サブルーチン~
・ラインの右側をトレースをするためのサブルーチン
sub line_followR()
{
int zk=0; //交差点を確認したときに数が増える...
SetSensor(SENSOR_3, SENSOR_LIGHT);
ClearTimer(0);
while(zk==0) { //カウンターが0の時...
while(FastTimer(0)>100); //タイマーで1秒以上...
if (SENSOR_3 < DARK){ //黒を1秒以上感知...
short_break;
PlaySound(SOUND_DOUBLE_BEEP); //1秒停止し音を...
zk=1; //カウンターが1の時このサブルー...
}else if (SENSOR_3<BRACK){
right_senkai; //センサ...
ClearTimer(0); //毎回タイ...
}else if (SENSOR_3 < THRESHOLD){
left; // センサ...
ClearTimer(0);
}else if(SENSOR_3> THRESHOLD) {
right; //センサ...
ClearTimer(0);
}
Wait(STEP);
}
}
最初にカウンター(zk)を設置していなかったため次の動作...
ただサブルーチンをつなげただけでは次の動作に進まないとい...
しかもこのプログラムはミスがあり、タイマーが作動していま...
・ラインの左側をトレースするサブルーチン
sub line_followL()
{
int zk=0;
SetSensor(SENSOR_3, SENSOR_LIGHT);
ClearTimer(0);
while(zk==0) {
while(FastTimer(0)>100);
if (SENSOR_3 < DARK){
short_break;
PlaySound(SOUND_DOUBLE_BEEP);
zk=1;
}else if (SENSOR_3>WHITE){
right_senkai;
ClearTimer(0);
}else if (SENSOR_3 < THRESHOLD){
right;
ClearTimer(0);
}else if(SENSOR_3> THRESHOLD) {
left;
ClearTimer(0);
}
Wait(STEP);
}
}
1つめのサブルーチンを逆にしただけです。~
ここでは中間の値より大きいと左へ、小さいと右へ進ませてい...
右側のライントレースと同様タイマーが作動していません。~
・交差点で左折するサブルーチン
sub cross_left()
{
go;
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(280);
Off(OUT_AC);
}
・交差点で右折するサブルーチン~
sub cross_right()
{
go;
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(250);
Off(OUT_AC);
}
・斜めに動くサブルーチン~
sub cross_nanameL()
{
OnFwd(OUT_A);
Off(OUT_C);
Wait(230);
Off(OUT_A);
}
・左へ旋回するだけのサブルーチン~
sub cross_leftshort()
{
go;
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(220);
Off(OUT_AC);
}
・最終的なタスク~
task main()
{
line_followR(); //C→S交差点へ(最初のライントレースは...
cross_left(); //S交差点を左折
line_followR(); //S→P交差点へ
cross_left(); //P交差点を左折
line_followR(); //P→Q交差点へ
go; //直進
line_followR(); //Q交差点から円を描いてQ交差点へ
cross_nanameL(); //ライントレースの切り替えのため斜め移動
line_followL(); //Q→R交差点へ(ライントレースは左へ変...
cross_right(); //R交差点を右折
line_followL(); //R→P交差点へ
cross_leftshort(); //P交差点を左折
line_followR(); //P→A地点へ(ライントレースは右へ変化)
go_long ; //ゴールの中に入る為の直進
PlaySound(SOUND_UP); //勝利のサウンド
}
*ロボットの最終的な動き方 [#f42e1d23]
このプログラムの説明だけでは不明な点が多くあると思います...
なぜライントレースの左右が存在するかというと、私は最初に...
次になぜタイマーが作動していないのにゴールをすることがで...
あのプログラムではタイマーが作動していないためロボットはD...
*まとめ・感想 [#k4553ca3]
ロボットのところでも書いたように、前回の似顔絵ロボットの...
プログラムについては交差点で旋回するだけでは、ライントレ...
終了行:
[[2016a/Member]]
#contents
*今回の課題 [#vb924856]
今回の課題は下の画像の黒線の上を走ることでした
#ref(課題2.png)
私は画像の赤線で塗られている部分を走りました。~
言葉で説明すると~
C地点からA地点へ ~
C地点 → S左折 → P左折 → Q直進 → Q直進 → R右折 → P左折 → A...
また交差点では一秒静止し、音を鳴らすのがルールでした。~
私のルートでは交差点が6つありました。
*ロボットについて [#p47f6cd6]
今回のロボットは、前回の似顔絵ロボットを元に作成をしまし...
#ref(ライン2.JPG)
赤丸で囲んであるところに元はペンを上げ下げする機械があっ...
#ref(ライン6.5.jpg)
前から見るとこんな感じになります。~
この機械の工夫したところは、歯車をかませスピードを落とし...
それにより、交差点などではスピードが出すぎて、交差点だと...
*光センサーについて [#bae899bc]
光センサーは色の濃さを数値化し私たちに教えてくれるもので...
今回では、数字が大きいほど白く、数字が小さいほど黒くなり...
*プログラムについて [#y391940d]
今回のプログラムは多くの定義とサブルーチンを駆使していか...
今回私は、黒と白の中間の値を設定し、ロボはその値よりも大...
・定義したプログラム~
#define THRESHOLD 45 //この値は中間の色です
#define BRACK 37 //黒です
#define DARK 36 //さらに暗い黒です
#define WHITE 47 //白です
#define left Off(OUT_A); OnFwd(OUT_C); //左に曲がります
#define right OnFwd(OUT_A); Off(OUT_C); //右へ曲がり...
#define go_long OnFwd(OUT_AC);Wait(800);Off(OUT_AC); ...
#define go OnFwd(OUT_AC);Wait(200);Off(OUT_AC); //...
#define right_senkai OnFwd(OUT_C); OnRev(OUT_A); //...
#define left_senkai OnFwd(OUT_A);OnRev(OUT_C); //...
#define STEP 1 //0.01秒の間隔でロボが値...
#define short_break Off(OUT_AC);Wait(100); //交差点...
・サブルーチン~
・ラインの右側をトレースをするためのサブルーチン
sub line_followR()
{
int zk=0; //交差点を確認したときに数が増える...
SetSensor(SENSOR_3, SENSOR_LIGHT);
ClearTimer(0);
while(zk==0) { //カウンターが0の時...
while(FastTimer(0)>100); //タイマーで1秒以上...
if (SENSOR_3 < DARK){ //黒を1秒以上感知...
short_break;
PlaySound(SOUND_DOUBLE_BEEP); //1秒停止し音を...
zk=1; //カウンターが1の時このサブルー...
}else if (SENSOR_3<BRACK){
right_senkai; //センサ...
ClearTimer(0); //毎回タイ...
}else if (SENSOR_3 < THRESHOLD){
left; // センサ...
ClearTimer(0);
}else if(SENSOR_3> THRESHOLD) {
right; //センサ...
ClearTimer(0);
}
Wait(STEP);
}
}
最初にカウンター(zk)を設置していなかったため次の動作...
ただサブルーチンをつなげただけでは次の動作に進まないとい...
しかもこのプログラムはミスがあり、タイマーが作動していま...
・ラインの左側をトレースするサブルーチン
sub line_followL()
{
int zk=0;
SetSensor(SENSOR_3, SENSOR_LIGHT);
ClearTimer(0);
while(zk==0) {
while(FastTimer(0)>100);
if (SENSOR_3 < DARK){
short_break;
PlaySound(SOUND_DOUBLE_BEEP);
zk=1;
}else if (SENSOR_3>WHITE){
right_senkai;
ClearTimer(0);
}else if (SENSOR_3 < THRESHOLD){
right;
ClearTimer(0);
}else if(SENSOR_3> THRESHOLD) {
left;
ClearTimer(0);
}
Wait(STEP);
}
}
1つめのサブルーチンを逆にしただけです。~
ここでは中間の値より大きいと左へ、小さいと右へ進ませてい...
右側のライントレースと同様タイマーが作動していません。~
・交差点で左折するサブルーチン
sub cross_left()
{
go;
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(280);
Off(OUT_AC);
}
・交差点で右折するサブルーチン~
sub cross_right()
{
go;
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(250);
Off(OUT_AC);
}
・斜めに動くサブルーチン~
sub cross_nanameL()
{
OnFwd(OUT_A);
Off(OUT_C);
Wait(230);
Off(OUT_A);
}
・左へ旋回するだけのサブルーチン~
sub cross_leftshort()
{
go;
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(220);
Off(OUT_AC);
}
・最終的なタスク~
task main()
{
line_followR(); //C→S交差点へ(最初のライントレースは...
cross_left(); //S交差点を左折
line_followR(); //S→P交差点へ
cross_left(); //P交差点を左折
line_followR(); //P→Q交差点へ
go; //直進
line_followR(); //Q交差点から円を描いてQ交差点へ
cross_nanameL(); //ライントレースの切り替えのため斜め移動
line_followL(); //Q→R交差点へ(ライントレースは左へ変...
cross_right(); //R交差点を右折
line_followL(); //R→P交差点へ
cross_leftshort(); //P交差点を左折
line_followR(); //P→A地点へ(ライントレースは右へ変化)
go_long ; //ゴールの中に入る為の直進
PlaySound(SOUND_UP); //勝利のサウンド
}
*ロボットの最終的な動き方 [#f42e1d23]
このプログラムの説明だけでは不明な点が多くあると思います...
なぜライントレースの左右が存在するかというと、私は最初に...
次になぜタイマーが作動していないのにゴールをすることがで...
あのプログラムではタイマーが作動していないためロボットはD...
*まとめ・感想 [#k4553ca3]
ロボットのところでも書いたように、前回の似顔絵ロボットの...
プログラムについては交差点で旋回するだけでは、ライントレ...
ページ名: