2013a/Member/ryu/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*ロボットの紹介 [#e59065c9]
車のベースとなる部分は説明書通りに作り、缶をつかむため...
*コース攻略 [#yb2b1471]
**最初に悩んだポイント [#b1ef538c]
プログラムを作り(後に解説します)、ロボットを走らせて...
**缶を運ぶには [#ycb51cdf]
缶は全てタイマーを使ってやりました。挟むところまで何秒...
以上でコース攻略を終わります。
*プログラムの説明 [#d23b0dc2]
#define THRESHOLD 48 //しき値
#define HIPOWER 7 //モーターの強さ
#define LOWPOWER 2 //モーターの強さ
#define set_power_H SetPower(OUT_AC,HIPOWER); //モーター...
#define set_power_L SetPower(OUT_AC,LOWPOWER); //モータ...
#define set_power_N SetPower(OUT_B,LOWPOWER); //モータ...
#define go_forward set_power_H; OnFwd(OUT_AC); //前に進...
#define turn_left1 set_power_L ;\ //左に曲がる時のパワー
OnFwd(OUT_C);OnRev(OUT_A);
#define turn_left0 set_power_L ;\ //左に曲がる時のパワー
OnFwd(OUT_C);Off(OUT_A);
#define turn_right0 set_power_L ;\ //右に曲がる時のパワー
OnFwd(OUT_A);Off(OUT_C);
#define turn_right1 set_power_L ;\ //右に曲がる時のパワー
OnFwd(OUT_A);OnRev(OUT_C);
#define STEP 1
#define nMAX 300
#define short_break Off(OUT_AC); Wait(100); //休憩
#define CROSS_TIME 20
#define cross_line set_power_L;\
OnFwd(OUT_A);OnRev(OUT_C);\
Wait(CROSS_TIME);short_break;
#define arm_forward set_power_N; OnFwd(OUT_B);Wait(30);O...
#define arm_backward set_power_N; OnRev(OUT_B);Wait(30);...
task main ()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
int nOnline=0;
ClearTimer(0); //タイマーをリセット ...
while(FastTimer(0)<=400){ //四秒まで
while(nOnline < nMAX && FastTimer(0)<=400){
if(SENSOR_2< THRESHOLD -8) { //センサーの値が-8より...
turn_right1; //右に曲がる
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -3){ //センサーの値が-3より...
turn_right0; //右に曲がる
}else if(SENSOR_2< THRESHOLD +3){ //センサーの値が+...
go_forward; //直進する
}else if(SENSOR_2< THRESHOLD +8){ //センサーの値が+...
turn_left0; //左に曲がる
}else{
turn_left1; //左に曲がる
}
nOnline=0;
}
Wait(STEP);
}
}
Off(OUT_AC); //モーターAC停止
OnRev(OUT_B); //モーターB逆回転
Wait(10);
arm_forward;
PlaySound(SOUND_UP);
ここから時間で区切り、右、左どちらをたどるのかやしき値を...
while(FastTimer(0)<=800){
while(nOnline < nMAX && FastTimer(0)<=800){
if(SENSOR_2< THRESHOLD -8) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -3){
turn_right0;
}else if(SENSOR_2< THRESHOLD +3){
go_forward;
}else if(SENSOR_2< THRESHOLD +8){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
}
PlaySound(SOUND_UP);
arm_forward;
while(FastTimer(0)<=1700){
while(nOnline < nMAX && FastTimer(0)<=1700){
if(SENSOR_2< THRESHOLD -10) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -4){
turn_right0;
}else if(SENSOR_2< THRESHOLD +4){
go_forward;
}else if(SENSOR_2< THRESHOLD +10){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
}
PlaySound(SOUND_UP);
turn_left1;
Wait(10);
arm_forward;
while(FastTimer(0)<=2600){
while(nOnline < nMAX && FastTimer(0)<=2600){
if(SENSOR_2< THRESHOLD -10) {
turn_left1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -4){
turn_left0;
}else if(SENSOR_2< THRESHOLD +4){
go_forward;
}else if(SENSOR_2< THRESHOLD +10){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
}
PlaySound(SOUND_UP);
arm_forward;
while(FastTimer(0)<=4000){
while(nOnline < nMAX && FastTimer(0)<=4000){
if(SENSOR_2< THRESHOLD -10) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -4){
turn_right0;
}else if(SENSOR_2< THRESHOLD +3){
go_forward;
}else if(SENSOR_2< THRESHOLD +10){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
}
PlaySound(SOUND_UP);
arm_forward;
while(FastTimer(0)<=4800)
while(nOnline < nMAX && FastTimer(0)<=4800){
if(SENSOR_2< THRESHOLD -8) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -3){
turn_right0;
}else if(SENSOR_2< THRESHOLD +3){
go_forward;
}else if(SENSOR_2< THRESHOLD +8){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
}
PlaySound(SOUND_UP);
turn_left1;
Wait(300);
arm_backward;
OnRev(OUT_AC);
Wait(100);
turn_left1;
Wait(200);
while(FastTimer(0)<=6500){
while(nOnline < nMAX && FastTimer(0)<=6500){
if(SENSOR_2< THRESHOLD -8) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -4){
turn_right0;
}else if(SENSOR_2< THRESHOLD +3){
go_forward;
}else if(SENSOR_2< THRESHOLD +8){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
}
}
*まとめ [#f80064a1]
初めはプログラムで使う「言語」が全く理解できず、お手本...
終了行:
*ロボットの紹介 [#e59065c9]
車のベースとなる部分は説明書通りに作り、缶をつかむため...
*コース攻略 [#yb2b1471]
**最初に悩んだポイント [#b1ef538c]
プログラムを作り(後に解説します)、ロボットを走らせて...
**缶を運ぶには [#ycb51cdf]
缶は全てタイマーを使ってやりました。挟むところまで何秒...
以上でコース攻略を終わります。
*プログラムの説明 [#d23b0dc2]
#define THRESHOLD 48 //しき値
#define HIPOWER 7 //モーターの強さ
#define LOWPOWER 2 //モーターの強さ
#define set_power_H SetPower(OUT_AC,HIPOWER); //モーター...
#define set_power_L SetPower(OUT_AC,LOWPOWER); //モータ...
#define set_power_N SetPower(OUT_B,LOWPOWER); //モータ...
#define go_forward set_power_H; OnFwd(OUT_AC); //前に進...
#define turn_left1 set_power_L ;\ //左に曲がる時のパワー
OnFwd(OUT_C);OnRev(OUT_A);
#define turn_left0 set_power_L ;\ //左に曲がる時のパワー
OnFwd(OUT_C);Off(OUT_A);
#define turn_right0 set_power_L ;\ //右に曲がる時のパワー
OnFwd(OUT_A);Off(OUT_C);
#define turn_right1 set_power_L ;\ //右に曲がる時のパワー
OnFwd(OUT_A);OnRev(OUT_C);
#define STEP 1
#define nMAX 300
#define short_break Off(OUT_AC); Wait(100); //休憩
#define CROSS_TIME 20
#define cross_line set_power_L;\
OnFwd(OUT_A);OnRev(OUT_C);\
Wait(CROSS_TIME);short_break;
#define arm_forward set_power_N; OnFwd(OUT_B);Wait(30);O...
#define arm_backward set_power_N; OnRev(OUT_B);Wait(30);...
task main ()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
int nOnline=0;
ClearTimer(0); //タイマーをリセット ...
while(FastTimer(0)<=400){ //四秒まで
while(nOnline < nMAX && FastTimer(0)<=400){
if(SENSOR_2< THRESHOLD -8) { //センサーの値が-8より...
turn_right1; //右に曲がる
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -3){ //センサーの値が-3より...
turn_right0; //右に曲がる
}else if(SENSOR_2< THRESHOLD +3){ //センサーの値が+...
go_forward; //直進する
}else if(SENSOR_2< THRESHOLD +8){ //センサーの値が+...
turn_left0; //左に曲がる
}else{
turn_left1; //左に曲がる
}
nOnline=0;
}
Wait(STEP);
}
}
Off(OUT_AC); //モーターAC停止
OnRev(OUT_B); //モーターB逆回転
Wait(10);
arm_forward;
PlaySound(SOUND_UP);
ここから時間で区切り、右、左どちらをたどるのかやしき値を...
while(FastTimer(0)<=800){
while(nOnline < nMAX && FastTimer(0)<=800){
if(SENSOR_2< THRESHOLD -8) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -3){
turn_right0;
}else if(SENSOR_2< THRESHOLD +3){
go_forward;
}else if(SENSOR_2< THRESHOLD +8){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
}
PlaySound(SOUND_UP);
arm_forward;
while(FastTimer(0)<=1700){
while(nOnline < nMAX && FastTimer(0)<=1700){
if(SENSOR_2< THRESHOLD -10) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -4){
turn_right0;
}else if(SENSOR_2< THRESHOLD +4){
go_forward;
}else if(SENSOR_2< THRESHOLD +10){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
}
PlaySound(SOUND_UP);
turn_left1;
Wait(10);
arm_forward;
while(FastTimer(0)<=2600){
while(nOnline < nMAX && FastTimer(0)<=2600){
if(SENSOR_2< THRESHOLD -10) {
turn_left1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -4){
turn_left0;
}else if(SENSOR_2< THRESHOLD +4){
go_forward;
}else if(SENSOR_2< THRESHOLD +10){
turn_right0;
}else{
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
}
PlaySound(SOUND_UP);
arm_forward;
while(FastTimer(0)<=4000){
while(nOnline < nMAX && FastTimer(0)<=4000){
if(SENSOR_2< THRESHOLD -10) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -4){
turn_right0;
}else if(SENSOR_2< THRESHOLD +3){
go_forward;
}else if(SENSOR_2< THRESHOLD +10){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
}
PlaySound(SOUND_UP);
arm_forward;
while(FastTimer(0)<=4800)
while(nOnline < nMAX && FastTimer(0)<=4800){
if(SENSOR_2< THRESHOLD -8) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -3){
turn_right0;
}else if(SENSOR_2< THRESHOLD +3){
go_forward;
}else if(SENSOR_2< THRESHOLD +8){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
}
PlaySound(SOUND_UP);
turn_left1;
Wait(300);
arm_backward;
OnRev(OUT_AC);
Wait(100);
turn_left1;
Wait(200);
while(FastTimer(0)<=6500){
while(nOnline < nMAX && FastTimer(0)<=6500){
if(SENSOR_2< THRESHOLD -8) {
turn_right1;
nOnline++;
}else{
if(SENSOR_2< THRESHOLD -4){
turn_right0;
}else if(SENSOR_2< THRESHOLD +3){
go_forward;
}else if(SENSOR_2< THRESHOLD +8){
turn_left0;
}else{
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
}
}
*まとめ [#f80064a1]
初めはプログラムで使う「言語」が全く理解できず、お手本...
ページ名: