2014a/Member/sakar/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2014a/Member]]
#contents
*メンバー紹介 [#ea58800c]
・sakar
・yokkun
・sugaken
・arara
*課題 [#ib0e65b2]
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
**フィールドの説明 [#rbd36725]
・フィールドは課題1で使用した紙を2枚つなぎ合わせる (詳細...
・図の右半分の黄色い地点には、その数字と同じ数字が書いて...
**ルール [#p1a5df51]
***基本ルール [#mcc934ca]
◦競技時間は審判が続行不能と判断するまで、あるいはリ...
◦図の右上のスタートエリアからスタートする(課題1と同...
◦図の左半分にある紙コップを集めて、それぞれ右半分に...
◦右半分の紙コップは10cm内の移動は認める
◦開始の合図から5秒以内にスタートボタンを押す作業を...
◦競技が終了するまで、ロボットに触ったり人間が遠隔で...
◦途中でうまく動かなくなった場合、1回限り再スタート...
***基本得点の計算方法 [#t00535ff]
◦同じ番号の紙コップに重ねることができれば、1組で10点
◦番号が1違いの紙コップに重ねれば、1組で2点
◦番号が2違いの紙コップに重ねれば、1組で0点
◦最終的な紙コップの位置が10cm以上動いた場合は、その...
技術点の計算方法以下の動作の精度・スピード・確実性などを...
***得点の目安: [#l5639fb1]
◦紙コップを取りにいくまでの動作 (2点)
◦紙コップを掴む動作 (4点)
◦紙コップをを運ぶ動作(3点)
◦紙コップを重ねる動作(4点)
◦2台のRCXまたはNXTの連携の良さ(3点)
◦自立型のロボットとしての形や動作の美しさ、斬新さ(2...
◦その他 (2点)
*ロボット本体 [#td7cc56e]
&ref(2014a/Member/sakar/Mission2/車.jpeg,10%,a);
本体は前回の課題でできなかったことを色々実践してみた。そ...
**アーム [#zf601b9c]
&ref(2014a/Member/sakar/Mission2/アーム.JPG,10%,a);
アームは先生が作っていたものを参考にして作った。モーター...
&ref(2014a/Member/sakar/Mission2/歯車.jpg,40%,a);
そこで上の図のように少し歯車の位置を前後にずらしてみた。...
次に出てきた問題としてアームが上がらないということがでて...
他に工夫した点としてモーターを2つにしたので、ブロックが...
&ref(2014a/Member/sakar/Mission2/am.jpg,20%,a);
いざ走らせてみてボールを取らせてみると、案外ボールをアー...
**車体 [#fef3eebe]
&ref(2014a/Member/sakar/Mission2/車体.jpg,10%,a);
車体はタイヤ2つ本体2つというような形にした。本体は最初...
**センサー [#wa7db836]
センサーはコップの明るさを識別するものとトレースをするセ...
&ref(2014a/Member/sakar/Mission2/センサー.jpg,10%,a);
赤丸の方がトレース用。緑丸がコップ識別用である。工夫した...
*プログラム [#ad693ec7]
まずAのコップを取りに行くようにしてそこからコップの色で...
**定義 [#zed1d61e]
#define CUPA1 111
#define CUPA2 112
#define CUPA3 113
#define GOFOR 200
#define GOBACK 201
#define ARMUP 202
#define ARMDOWN 203
#define GOA1 121
#define GOA2 122
#define GOA3 123
#define SKIT 45 //トレースのしきい値
#define JUDGE 45 //紙コップ判断のしきい値
#define HIGHPOWER 7
#define LOWPOWER 1
#define set_power_H SetPower(OUT_AC,HIGHPOWER);//速度を...
#define set_power_L SetPower(OUT_AC,LOWPOWER);//速度を落...
#define turn_left1 set_power_L;OnFwd(OUT_A); OnRev(OUT_C...
#define turn_left0 set_power_L;OnFwd(OUT_A); Off(OUT_C);...
#define turn_right0 set_power_L;OnFwd(OUT_C); Off(OUT_A)...
#define turn_right1 set_power_L;OnFwd(OUT_C); OnRev(OUT_...
#define go_forward set_power_H; OnFwd(OUT_AC); //直進
#define go_back(s) OnRev(OUT_AC); Wait(s); Off(OUT_AC); ...
#define STEP 1 //ライントレースの判断時間
#define noMAX 30 //右に行き過ぎた時、転回の最大回数
#define NOSTEP 200 //右に行き過ぎた時、左に戻るための時間
#define SENDTIME 300
**ライントレースのサブルーティン [#nb90309b]
sub line_trace(tim)
{
SetSensor(SENSOR_2, SENSOR_LIGHT); //ライントレース用の...
int nonline=0;
ClearTimer(1);
while(Timer(1) <= tim){
if (SENSOR_2 < SKIT-6){
turn_left1;
} else if (SENSOR_2 < SKIT-3) { //しきい値より...
turn_left0; //しきい値よりも...
} else if (SENSOR_2 < SKIT+3) { //しきい値よりも...
go_forward; //しきい値よりも...
} else { //右旋回をしすぎ...
if(SENSOR_2 < SKIT+6) { //して戻る
turn_right0;
} else {
while (nonline < noMAX){
turn_right1;
nonline++;
}
turn_left1;
Wait(noMAX*STEP*NOSTEP);
}
nonline=0;
}
Wait(STEP); //停止 ...
}
}
**メインのタスク [#f05333a4]
コップの色の識別方法として、なにも塗ってないコップ、マジ...
task main()
{
SetSensor(SENSOR_3, SENSOR_LIGHT); //紙コップ識別用の光...
go_forward; //4.3秒前に進む
Wait(430);
line_trace(800); //ライントレースを8...
while(true){
***Aから1へ紙コップを運ぶ場合 [#na6ad4fb]
if (SENSOR_3 < JUDGE-7){
Off(OUT_AC); ...
ClearTimer(0); ...
ClearMessage(); ...
while((Message() != 1)||(FastTimer(0)<SENDTIME)){
SendMessage(CUPA1);
}
if(Message() == 1){
PlaySound(SOUND_CLICK);
}else{
PlaySound(SOUND_LOW_BEEP); ...
}
Wait(50);
}
until(Message() == GOFOR);
SendMessage(2); ...
OnFwd(OUT_AC); ...
Wait(80);
ClearTimer(0);
ClearMessage();
while((Message() != 3)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMUP);
}
if(Message() == 3){
PlaySound(SOUND_CLICK); /...
}else{
PlaySound(SOUND_LOW_BEEP); //...
}
Wait(50);
}
ClearMessage();
while(true){
if(Message() == GOA1){
SendMessage(4); //...
OnRev(OUT_AC); //1...
Wait(100);
turn_left1; //3...
Wait(30);
OnFwd(OUT_AC); //3秒...
Wait(300);
line_trace();
until(SENSOR_3 < JUDGE-7);
Off(OUT_AC); //停止
go_back(100); //バック
ClearTimer(0);
ClearMessage();
while((Message() != 5)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMDOWN);
}
if(Message() == 5){
PlaySound(SOUND_CLICK); //音を...
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴...
}
Wait(50);
until(Message() == GOBACK);
SendMessage(6);
OnFwd(OUT_AC); //8秒前進
Wait(80);
ClearTimer(0);
ClearMessage();
}
***Aから2へ紙コップを運ぶ場合 [#yd276659]
else if(SENSOR_3 < JUDGE-3){
Off(OUT_AC); //停止
ClearTimer(0);
ClearMessage();
while((Message() != 1)||(FastTimer(0)<SENDTIME)){
SendMessage(CUPA2); //メ...
}
if(Message() == 1){
PlaySound(SOUND_CLICK); //音...
}else{
PlaySound(SOUND_LOW_BEEP); //音...
}
Wait(50);
}
until(Message() == GOFOR);
SendMessage(2);
OnFwd(OUT_AC); //8...
Wait(80);
ClearTimer(0);
ClearMessage();
while((Message() != 3)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMUP);
}
if(Message() == 3){
PlaySound(SOUND_CLICK); //音を...
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴...
}
Wait(50);
}
ClearMessage();
while(true){
if(Message() == GOA2){
SendMessage(4); //メッセ...
line_trace();
until(SENSOR_3 < JUDGE-2);
Off(OUT_AC);
go_back(100); //後ろに...
ClearTimer(0);
ClearMessage();
while((Message() != 5)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMDOWN);
}
if(Message() == 5){
PlaySound(SOUND_CLICK); //音を鳴...
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴...
}
Wait(50);
until(Message() == GOBACK);
SendMessage(6);
OnFwd(OUT_AC); //8秒前進
Wait(80);
ClearTimer(0);
ClearMessage();
}
***Aから3へ紙コップを運ぶ場合 [#e60b9978]
else if(SENSOR_3 > JUDGE+5){
Off(OUT_AC); //停止
ClearTimer(0);
ClearMessage();
while((Message() != 1)||(FastTimer(0)<SENDTIME)){
SendMessage(CUPA3); //メッセ...
}
if(Message() == 1){
PlaySound(SOUND_CLICK); //音を鳴...
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
}
until(Message() == GOFOR);
SendMessage(2); //メッセー...
OnFwd(OUT_AC); //8秒前進
Wait(80);
ClearTimer(0);
ClearMessage();
while((Message() != 3)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMUP); //メッセージ...
}
if(Message() == 3){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
}
ClearMessage();
while(true){
if(Message() == GOA3){
SendMessage(4); //メッセージ...
go_forward; //2秒前進
Wait(200);
turn_left0; //2秒左折
Wait(200);
line_trace(); //ライントレ...
until(SENSOR_3 > JUDGE+6);
Off(OUT_AC); //停止
go_back(100); //1秒下がる
ClearTimer(0);
ClearMessage();
while((Message() != 5)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMDOWN);
}
if(Message() == 1){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message() == GOBACK);
SendMessage(6); //メッセージを送る
OnFwd(OUT_AC); //8秒前進
Wait(80);
ClearTimer(0);
ClearMessage();
}
}
}
*アームに関するプログラム [#f6cfb264]
**定義 [#u6fd9f92]
#define CUPA1 111 //固有値の値
#define CUPA2 112
#define CUPA3 113
#define GOFOR 200
#define GOBACK 201
#define ARMUP 202
#define ARMDOWN 203
#define GOA1 121
#define GOA2 122
#define GOA3 123
#define HIGHPOWER 7 //パワーの数値
#define LOWPOWER 1
#define CATCHPOWER 4
#define set_power_H SetPower(OUT_AC,HIGHPOWER);// ア...
#define set_power_L SetPower(OUT_AC,LOWPOWER); //
#define set_power_C SetPower(OUT_B,CATCHPOWER);//
#define STEP 1
#define SENDTIME 300
**メインのタスク [#oef68a3f]
task main()
{
ClearMessage();
OnRev(OUT_AC); //アームを下げる
Wait(1200);
Off(OUT_AC); //停止
while(true){
***Aから1へ紙コップを運ぶ場合 [#i8d874e1]
if(Message() == CUPA1){
SendMessage(1); //メッセージを送る
OnFwd(OUT_AC); //アームを上げる
Wait(50);
ClearTimer(0);
ClearMessage();
while((Message() != 2)||(FastTimer(0)<SENDTIME)){
SendMessage(GOFOR);
}
if(Message() == 2){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(3);
OnRev(OUT_AC); //アームを下げる
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 4)||(FastTimer(0)<SENDTIME)){
SendMessage(GOA1);
}
if(Message() == 4){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
until(Message()==ARMDOWN);
SendMessage(5);
OnFwd(OUT_AC); //アームを上げる
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 6)||(FastTimer(0)<SENDTIME)){
SendMessage(GOBACK);
}
if(Message() == 6){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(7);
OnRev(OUT_AC); //アームを下...
Wait(150);}
***Aから2へ紙コップを運ぶ場合 [#z55a7859]
else if(Message() == CUPA2){
SendMessage(1);
OnFwd(OUT_AC); //アームを上げる
Wait(50);
ClearTimer(0);
ClearMessage();
while((Message() != 2)||(FastTimer(0)<SENDTIME)){
SendMessage(GOFOR);
}
if(Message() == 2){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(3);
OnRev(OUT_AC); //アームを下げ...
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 4)||(FastTimer(0)<SENDTIME)){
SendMessage(GOA2);
}
if(Message() == 4){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
OnRev(OUT_B); //アームを下げる
Wait(800);
}
until(Message()==ARMDOWN);
SendMessage(5);
OnFwd(OUT_AC); //アームを上げる
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 6)||(FastTimer(0)<SENDTIME)){
SendMessage(GOBACK);
}
if(Message() == 6){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(7);
OnRev(OUT_AC); //アームを下げて積み重ねる
Wait(150);
***Aから3へ紙コップを運ぶ場合 [#y0b11160]
}if(Message() == CUPA3){
SendMessage(1);
OnFwd(OUT_AC); //アームを上げる
Wait(50);
ClearTimer(0);
ClearMessage();
while((Message() != 2)||(FastTimer(0)<SENDTIME)){
SendMessage(GOFOR);
}
if(Message() == 2){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(3);
OnRev(OUT_AC); //アームを下げる
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 4)||(FastTimer(0)<SENDTIME)){
SendMessage(GOA3);
}
if(Message() == 4){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMDOWN);
SendMessage(5);
OnFwd(OUT_AC); //アームを上げる
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 6)||(FastTimer(0)<SENDTIME)){
SendMessage(GOBACK);
}
if(Message() == 6){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(7);
OnRev(OUT_AC); //アームを下げて積み...
Wait(150);
}
}
*反省・感想 [#x744f955]
一番の反省として、プログラムが自分たちが作ったように機能...
だが、課題1の時と比べて成長したと思うところもある。ロボ...
授業を終えてプログラムについて少しは理解できたかなと思う...
終了行:
[[2014a/Member]]
#contents
*メンバー紹介 [#ea58800c]
・sakar
・yokkun
・sugaken
・arara
*課題 [#ib0e65b2]
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=ref&page=...
**フィールドの説明 [#rbd36725]
・フィールドは課題1で使用した紙を2枚つなぎ合わせる (詳細...
・図の右半分の黄色い地点には、その数字と同じ数字が書いて...
**ルール [#p1a5df51]
***基本ルール [#mcc934ca]
◦競技時間は審判が続行不能と判断するまで、あるいはリ...
◦図の右上のスタートエリアからスタートする(課題1と同...
◦図の左半分にある紙コップを集めて、それぞれ右半分に...
◦右半分の紙コップは10cm内の移動は認める
◦開始の合図から5秒以内にスタートボタンを押す作業を...
◦競技が終了するまで、ロボットに触ったり人間が遠隔で...
◦途中でうまく動かなくなった場合、1回限り再スタート...
***基本得点の計算方法 [#t00535ff]
◦同じ番号の紙コップに重ねることができれば、1組で10点
◦番号が1違いの紙コップに重ねれば、1組で2点
◦番号が2違いの紙コップに重ねれば、1組で0点
◦最終的な紙コップの位置が10cm以上動いた場合は、その...
技術点の計算方法以下の動作の精度・スピード・確実性などを...
***得点の目安: [#l5639fb1]
◦紙コップを取りにいくまでの動作 (2点)
◦紙コップを掴む動作 (4点)
◦紙コップをを運ぶ動作(3点)
◦紙コップを重ねる動作(4点)
◦2台のRCXまたはNXTの連携の良さ(3点)
◦自立型のロボットとしての形や動作の美しさ、斬新さ(2...
◦その他 (2点)
*ロボット本体 [#td7cc56e]
&ref(2014a/Member/sakar/Mission2/車.jpeg,10%,a);
本体は前回の課題でできなかったことを色々実践してみた。そ...
**アーム [#zf601b9c]
&ref(2014a/Member/sakar/Mission2/アーム.JPG,10%,a);
アームは先生が作っていたものを参考にして作った。モーター...
&ref(2014a/Member/sakar/Mission2/歯車.jpg,40%,a);
そこで上の図のように少し歯車の位置を前後にずらしてみた。...
次に出てきた問題としてアームが上がらないということがでて...
他に工夫した点としてモーターを2つにしたので、ブロックが...
&ref(2014a/Member/sakar/Mission2/am.jpg,20%,a);
いざ走らせてみてボールを取らせてみると、案外ボールをアー...
**車体 [#fef3eebe]
&ref(2014a/Member/sakar/Mission2/車体.jpg,10%,a);
車体はタイヤ2つ本体2つというような形にした。本体は最初...
**センサー [#wa7db836]
センサーはコップの明るさを識別するものとトレースをするセ...
&ref(2014a/Member/sakar/Mission2/センサー.jpg,10%,a);
赤丸の方がトレース用。緑丸がコップ識別用である。工夫した...
*プログラム [#ad693ec7]
まずAのコップを取りに行くようにしてそこからコップの色で...
**定義 [#zed1d61e]
#define CUPA1 111
#define CUPA2 112
#define CUPA3 113
#define GOFOR 200
#define GOBACK 201
#define ARMUP 202
#define ARMDOWN 203
#define GOA1 121
#define GOA2 122
#define GOA3 123
#define SKIT 45 //トレースのしきい値
#define JUDGE 45 //紙コップ判断のしきい値
#define HIGHPOWER 7
#define LOWPOWER 1
#define set_power_H SetPower(OUT_AC,HIGHPOWER);//速度を...
#define set_power_L SetPower(OUT_AC,LOWPOWER);//速度を落...
#define turn_left1 set_power_L;OnFwd(OUT_A); OnRev(OUT_C...
#define turn_left0 set_power_L;OnFwd(OUT_A); Off(OUT_C);...
#define turn_right0 set_power_L;OnFwd(OUT_C); Off(OUT_A)...
#define turn_right1 set_power_L;OnFwd(OUT_C); OnRev(OUT_...
#define go_forward set_power_H; OnFwd(OUT_AC); //直進
#define go_back(s) OnRev(OUT_AC); Wait(s); Off(OUT_AC); ...
#define STEP 1 //ライントレースの判断時間
#define noMAX 30 //右に行き過ぎた時、転回の最大回数
#define NOSTEP 200 //右に行き過ぎた時、左に戻るための時間
#define SENDTIME 300
**ライントレースのサブルーティン [#nb90309b]
sub line_trace(tim)
{
SetSensor(SENSOR_2, SENSOR_LIGHT); //ライントレース用の...
int nonline=0;
ClearTimer(1);
while(Timer(1) <= tim){
if (SENSOR_2 < SKIT-6){
turn_left1;
} else if (SENSOR_2 < SKIT-3) { //しきい値より...
turn_left0; //しきい値よりも...
} else if (SENSOR_2 < SKIT+3) { //しきい値よりも...
go_forward; //しきい値よりも...
} else { //右旋回をしすぎ...
if(SENSOR_2 < SKIT+6) { //して戻る
turn_right0;
} else {
while (nonline < noMAX){
turn_right1;
nonline++;
}
turn_left1;
Wait(noMAX*STEP*NOSTEP);
}
nonline=0;
}
Wait(STEP); //停止 ...
}
}
**メインのタスク [#f05333a4]
コップの色の識別方法として、なにも塗ってないコップ、マジ...
task main()
{
SetSensor(SENSOR_3, SENSOR_LIGHT); //紙コップ識別用の光...
go_forward; //4.3秒前に進む
Wait(430);
line_trace(800); //ライントレースを8...
while(true){
***Aから1へ紙コップを運ぶ場合 [#na6ad4fb]
if (SENSOR_3 < JUDGE-7){
Off(OUT_AC); ...
ClearTimer(0); ...
ClearMessage(); ...
while((Message() != 1)||(FastTimer(0)<SENDTIME)){
SendMessage(CUPA1);
}
if(Message() == 1){
PlaySound(SOUND_CLICK);
}else{
PlaySound(SOUND_LOW_BEEP); ...
}
Wait(50);
}
until(Message() == GOFOR);
SendMessage(2); ...
OnFwd(OUT_AC); ...
Wait(80);
ClearTimer(0);
ClearMessage();
while((Message() != 3)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMUP);
}
if(Message() == 3){
PlaySound(SOUND_CLICK); /...
}else{
PlaySound(SOUND_LOW_BEEP); //...
}
Wait(50);
}
ClearMessage();
while(true){
if(Message() == GOA1){
SendMessage(4); //...
OnRev(OUT_AC); //1...
Wait(100);
turn_left1; //3...
Wait(30);
OnFwd(OUT_AC); //3秒...
Wait(300);
line_trace();
until(SENSOR_3 < JUDGE-7);
Off(OUT_AC); //停止
go_back(100); //バック
ClearTimer(0);
ClearMessage();
while((Message() != 5)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMDOWN);
}
if(Message() == 5){
PlaySound(SOUND_CLICK); //音を...
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴...
}
Wait(50);
until(Message() == GOBACK);
SendMessage(6);
OnFwd(OUT_AC); //8秒前進
Wait(80);
ClearTimer(0);
ClearMessage();
}
***Aから2へ紙コップを運ぶ場合 [#yd276659]
else if(SENSOR_3 < JUDGE-3){
Off(OUT_AC); //停止
ClearTimer(0);
ClearMessage();
while((Message() != 1)||(FastTimer(0)<SENDTIME)){
SendMessage(CUPA2); //メ...
}
if(Message() == 1){
PlaySound(SOUND_CLICK); //音...
}else{
PlaySound(SOUND_LOW_BEEP); //音...
}
Wait(50);
}
until(Message() == GOFOR);
SendMessage(2);
OnFwd(OUT_AC); //8...
Wait(80);
ClearTimer(0);
ClearMessage();
while((Message() != 3)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMUP);
}
if(Message() == 3){
PlaySound(SOUND_CLICK); //音を...
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴...
}
Wait(50);
}
ClearMessage();
while(true){
if(Message() == GOA2){
SendMessage(4); //メッセ...
line_trace();
until(SENSOR_3 < JUDGE-2);
Off(OUT_AC);
go_back(100); //後ろに...
ClearTimer(0);
ClearMessage();
while((Message() != 5)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMDOWN);
}
if(Message() == 5){
PlaySound(SOUND_CLICK); //音を鳴...
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴...
}
Wait(50);
until(Message() == GOBACK);
SendMessage(6);
OnFwd(OUT_AC); //8秒前進
Wait(80);
ClearTimer(0);
ClearMessage();
}
***Aから3へ紙コップを運ぶ場合 [#e60b9978]
else if(SENSOR_3 > JUDGE+5){
Off(OUT_AC); //停止
ClearTimer(0);
ClearMessage();
while((Message() != 1)||(FastTimer(0)<SENDTIME)){
SendMessage(CUPA3); //メッセ...
}
if(Message() == 1){
PlaySound(SOUND_CLICK); //音を鳴...
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
}
until(Message() == GOFOR);
SendMessage(2); //メッセー...
OnFwd(OUT_AC); //8秒前進
Wait(80);
ClearTimer(0);
ClearMessage();
while((Message() != 3)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMUP); //メッセージ...
}
if(Message() == 3){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
}
ClearMessage();
while(true){
if(Message() == GOA3){
SendMessage(4); //メッセージ...
go_forward; //2秒前進
Wait(200);
turn_left0; //2秒左折
Wait(200);
line_trace(); //ライントレ...
until(SENSOR_3 > JUDGE+6);
Off(OUT_AC); //停止
go_back(100); //1秒下がる
ClearTimer(0);
ClearMessage();
while((Message() != 5)||(FastTimer(0)<SENDTIME)){
SendMessage(ARMDOWN);
}
if(Message() == 1){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message() == GOBACK);
SendMessage(6); //メッセージを送る
OnFwd(OUT_AC); //8秒前進
Wait(80);
ClearTimer(0);
ClearMessage();
}
}
}
*アームに関するプログラム [#f6cfb264]
**定義 [#u6fd9f92]
#define CUPA1 111 //固有値の値
#define CUPA2 112
#define CUPA3 113
#define GOFOR 200
#define GOBACK 201
#define ARMUP 202
#define ARMDOWN 203
#define GOA1 121
#define GOA2 122
#define GOA3 123
#define HIGHPOWER 7 //パワーの数値
#define LOWPOWER 1
#define CATCHPOWER 4
#define set_power_H SetPower(OUT_AC,HIGHPOWER);// ア...
#define set_power_L SetPower(OUT_AC,LOWPOWER); //
#define set_power_C SetPower(OUT_B,CATCHPOWER);//
#define STEP 1
#define SENDTIME 300
**メインのタスク [#oef68a3f]
task main()
{
ClearMessage();
OnRev(OUT_AC); //アームを下げる
Wait(1200);
Off(OUT_AC); //停止
while(true){
***Aから1へ紙コップを運ぶ場合 [#i8d874e1]
if(Message() == CUPA1){
SendMessage(1); //メッセージを送る
OnFwd(OUT_AC); //アームを上げる
Wait(50);
ClearTimer(0);
ClearMessage();
while((Message() != 2)||(FastTimer(0)<SENDTIME)){
SendMessage(GOFOR);
}
if(Message() == 2){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(3);
OnRev(OUT_AC); //アームを下げる
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 4)||(FastTimer(0)<SENDTIME)){
SendMessage(GOA1);
}
if(Message() == 4){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
until(Message()==ARMDOWN);
SendMessage(5);
OnFwd(OUT_AC); //アームを上げる
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 6)||(FastTimer(0)<SENDTIME)){
SendMessage(GOBACK);
}
if(Message() == 6){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(7);
OnRev(OUT_AC); //アームを下...
Wait(150);}
***Aから2へ紙コップを運ぶ場合 [#z55a7859]
else if(Message() == CUPA2){
SendMessage(1);
OnFwd(OUT_AC); //アームを上げる
Wait(50);
ClearTimer(0);
ClearMessage();
while((Message() != 2)||(FastTimer(0)<SENDTIME)){
SendMessage(GOFOR);
}
if(Message() == 2){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(3);
OnRev(OUT_AC); //アームを下げ...
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 4)||(FastTimer(0)<SENDTIME)){
SendMessage(GOA2);
}
if(Message() == 4){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
OnRev(OUT_B); //アームを下げる
Wait(800);
}
until(Message()==ARMDOWN);
SendMessage(5);
OnFwd(OUT_AC); //アームを上げる
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 6)||(FastTimer(0)<SENDTIME)){
SendMessage(GOBACK);
}
if(Message() == 6){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(7);
OnRev(OUT_AC); //アームを下げて積み重ねる
Wait(150);
***Aから3へ紙コップを運ぶ場合 [#y0b11160]
}if(Message() == CUPA3){
SendMessage(1);
OnFwd(OUT_AC); //アームを上げる
Wait(50);
ClearTimer(0);
ClearMessage();
while((Message() != 2)||(FastTimer(0)<SENDTIME)){
SendMessage(GOFOR);
}
if(Message() == 2){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(3);
OnRev(OUT_AC); //アームを下げる
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 4)||(FastTimer(0)<SENDTIME)){
SendMessage(GOA3);
}
if(Message() == 4){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMDOWN);
SendMessage(5);
OnFwd(OUT_AC); //アームを上げる
Wait(150);
ClearTimer(0);
ClearMessage();
while((Message() != 6)||(FastTimer(0)<SENDTIME)){
SendMessage(GOBACK);
}
if(Message() == 6){
PlaySound(SOUND_CLICK); //音を鳴らす
}else{
PlaySound(SOUND_LOW_BEEP); //音を鳴らす
}
Wait(50);
until(Message()==ARMUP);
SendMessage(7);
OnRev(OUT_AC); //アームを下げて積み...
Wait(150);
}
}
*反省・感想 [#x744f955]
一番の反省として、プログラムが自分たちが作ったように機能...
だが、課題1の時と比べて成長したと思うところもある。ロボ...
授業を終えてプログラムについて少しは理解できたかなと思う...
ページ名: