2017a/Member/kosih/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]~
目次
#contents
*課題2について [#m74bffdd]
詳しくは[[課題2>2017a/Mission2]]を参照。~
私はE地点直進コースを担当しました。
*ロボットについて [#je9d5340]
できるだけコンパクトなつくりにすることで小回りが効くよう...
&ref(2017a/Member/kosih/Mission2/IMG_20170707_161942.jpg,...
&ref(2017a/Member/kosih/Mission2/IMG_20170707_162023.jpg,...
&ref(2017a/Member/kosih/Mission2/IMG_20170707_162034.jpg,...
*プログラム [#faa14e36]
#define shikii 40
#define kuro 36
#define siro 44
#define tyottosiro 43
#define tyottokuro 37
#define migimae OnFwd(OUT_A);
#define hidarimae OnFwd(OUT_C);
#define migi OnFwd(OUT_A);OnRev(OUT_C);
#define hidari OnFwd(OUT_C);OnRev(OUT_A);
#define mae OnFwd(OUT_AC);
#define STEP 2
#define movetime 22
#define kyuumovetime 52
#define yuruimovetime 19
#define tyokkakumovetime 25
sub tadoru() //たどる
{
ClearTimer(0);
SetPower(OUT_AC,1);
SetSensor(SENSOR_2, SENSOR_LIGHT);
while (FastTimer(0)<=movetime)
if (SENSOR_2 < kuro){ //黒以下なら
hidari;
}
else if (SENSOR_2 < tyottokuro){ //黒〜ちょっと黒なら
hidarimae;ClearTimer(0);
}
else if (SENSOR_2 < tyottosiro){ //ちょっと黒〜ちょっ...
mae;ClearTimer(0);
}
else if (SENSOR_2 < siro){ // ちょっと白〜白なら
migimae;ClearTimer(0);
}
else if (SENSOR_2 > siro){ // 白以上なら
migi;ClearTimer(0);
}
Wait(STEP);
}
sub tadorusecond() ...
{
ClearTimer(0);
SetPower(OUT_AC,1);
SetSensor(SENSOR_2, SENSOR_LIGHT);
while (FastTimer(0)<=18)
if (SENSOR_2 < kuro){ //黒以下なら
hidari;
}
else if (SENSOR_2 < tyottokuro){ //黒〜ちょっと黒なら
hidarimae;ClearTimer(0);
}
else if (SENSOR_2 < tyottosiro){ //ちょっと黒〜ちょっ...
mae;ClearTimer(0);
}
else if (SENSOR_2 < siro){ // ちょっと白〜白なら
migimae;ClearTimer(0);
}
else if (SENSOR_2 > siro){ // 白以上なら
migi;ClearTimer(0);
}
Wait(STEP);
}
sub kyuutadoru() //急カー...
{
ClearTimer(0);
SetPower(OUT_AC,0);
SetSensor(SENSOR_2, SENSOR_LIGHT);
while (FastTimer(0)<=kyuumovetime)
if (SENSOR_2 < kuro){ //黒以下なら
hidari;
}
else if (SENSOR_2 < tyottokuro){ //黒〜ちょっと黒なら
hidarimae;ClearTimer(0);
}
else if (SENSOR_2 < tyottosiro){ //ちょっと黒〜ちょっ...
mae; ClearTimer(0);
}
else if (SENSOR_2 < siro){ //ちょっと白〜白なら
migimae;ClearTimer(0);
}
else if (SENSOR_2 > siro){ // 白以上なら
migi;ClearTimer(0);
}
Wait(STEP);
}
sub yurukutadoru() //緩いカ...
{
ClearTimer(0);
SetPower(OUT_AC,1);
SetSensor(SENSOR_2, SENSOR_LIGHT);
while (FastTimer(0)<=yuruimovetime)
if (SENSOR_2 < kuro){ //黒以下なら
hidari;
}
else if (SENSOR_2 < tyottokuro){ //黒〜ちょっと黒なら
hidarimae;ClearTimer(0);
}
else if (SENSOR_2 < tyottosiro){ //ちょっと黒〜ちょっ...
mae;ClearTimer(0);
}
else if (SENSOR_2 < siro){ // ちょっと白〜白なら
migimae;ClearTimer(0);
}
else if (SENSOR_2 > siro){ // 白以上なら
migi;ClearTimer(0);
}
PlaySound(SOUND_UP);
}
sub tomaru() //止まる
{
PlaySound(SOUND_DOWN);
Off(OUT_AC);
Wait(100);
hidarimae;
Wait(75);
mae;
Wait(40);
}
sub tyokkakutadoru() ...
{
ClearTimer(0);
SetPower(OUT_AC,0);
SetSensor(SENSOR_2, SENSOR_LIGHT);
while (FastTimer(0)<=tyokkakumovetime)
if (SENSOR_2 < kuro){ //黒以下なら
hidari;
}
else if (SENSOR_2 < shikii){ //黒〜閾値なら
hidarimae;ClearTimer(0);
}
else if (SENSOR_2 < siro){ // 閾値〜白なら
migimae;ClearTimer(0);
}
else if (SENSOR_2 > siro){ // 白以上なら
migi;ClearTimer(0);
}
Wait(STEP);
}
task main()
{
tadoru();
PlaySound(SOUND_UP);//1回目
migimae;
Wait(10);
hidari;
Wait(40);
tadoru();
tomaru();//2回目
yurukutadoru();//3回目
Off(OUT_C);
OnFwd(OUT_A);
Wait(80);
yurukutadoru();//4回目
Off(OUT_A);
OnFwd(OUT_C);
Wait(80);
tadoru();
PlaySound(SOUND_UP);//5回目
migimae;
Wait(10);
hidari;
Wait(40);
kyuutadoru();
tadorusecond();
tadorusecond();
PlaySound(SOUND_UP);//6回目
tadorusecond();
PlaySound(SOUND_DOWN);
Off(OUT_AC);
Wait(100);
migimae;
Wait(25);
mae;
Wait(20);
tadorusecond();
PlaySound(SOUND_DOWN);//7回目
Off(OUT_AC);
Wait(100);
migimae;
Wait(25);
mae;
Wait(20);
tadoru();
tomaru();//8回目
yurukutadoru();//9回目
Off(OUT_C);
OnFwd(OUT_A);
Wait(80);
yurukutadoru();//10回目
Off(OUT_A);
OnFwd(OUT_C);
Wait(80);
tadoru();
PlaySound(SOUND_UP);//11回目
migimae;
Wait(10);
hidari;
Wait(40);
tadoru();
mae;
Wait(250);
Off(OUT_AC);//ゴール
}
*交差点の判断 [#x163f1fe]
交差点の判断はセンサーが黒色を認識している時間を計って行...
*プログラムの工夫点 [#d8f05fe2]
カウンターは使わず、タスクメインに順番通りに指令を書き並...
*反省点 [#k0355a59]
今回光センサを使った課題で、道の識別に必要な色の値の設定...
終了行:
[[2017a/Member]]~
目次
#contents
*課題2について [#m74bffdd]
詳しくは[[課題2>2017a/Mission2]]を参照。~
私はE地点直進コースを担当しました。
*ロボットについて [#je9d5340]
できるだけコンパクトなつくりにすることで小回りが効くよう...
&ref(2017a/Member/kosih/Mission2/IMG_20170707_161942.jpg,...
&ref(2017a/Member/kosih/Mission2/IMG_20170707_162023.jpg,...
&ref(2017a/Member/kosih/Mission2/IMG_20170707_162034.jpg,...
*プログラム [#faa14e36]
#define shikii 40
#define kuro 36
#define siro 44
#define tyottosiro 43
#define tyottokuro 37
#define migimae OnFwd(OUT_A);
#define hidarimae OnFwd(OUT_C);
#define migi OnFwd(OUT_A);OnRev(OUT_C);
#define hidari OnFwd(OUT_C);OnRev(OUT_A);
#define mae OnFwd(OUT_AC);
#define STEP 2
#define movetime 22
#define kyuumovetime 52
#define yuruimovetime 19
#define tyokkakumovetime 25
sub tadoru() //たどる
{
ClearTimer(0);
SetPower(OUT_AC,1);
SetSensor(SENSOR_2, SENSOR_LIGHT);
while (FastTimer(0)<=movetime)
if (SENSOR_2 < kuro){ //黒以下なら
hidari;
}
else if (SENSOR_2 < tyottokuro){ //黒〜ちょっと黒なら
hidarimae;ClearTimer(0);
}
else if (SENSOR_2 < tyottosiro){ //ちょっと黒〜ちょっ...
mae;ClearTimer(0);
}
else if (SENSOR_2 < siro){ // ちょっと白〜白なら
migimae;ClearTimer(0);
}
else if (SENSOR_2 > siro){ // 白以上なら
migi;ClearTimer(0);
}
Wait(STEP);
}
sub tadorusecond() ...
{
ClearTimer(0);
SetPower(OUT_AC,1);
SetSensor(SENSOR_2, SENSOR_LIGHT);
while (FastTimer(0)<=18)
if (SENSOR_2 < kuro){ //黒以下なら
hidari;
}
else if (SENSOR_2 < tyottokuro){ //黒〜ちょっと黒なら
hidarimae;ClearTimer(0);
}
else if (SENSOR_2 < tyottosiro){ //ちょっと黒〜ちょっ...
mae;ClearTimer(0);
}
else if (SENSOR_2 < siro){ // ちょっと白〜白なら
migimae;ClearTimer(0);
}
else if (SENSOR_2 > siro){ // 白以上なら
migi;ClearTimer(0);
}
Wait(STEP);
}
sub kyuutadoru() //急カー...
{
ClearTimer(0);
SetPower(OUT_AC,0);
SetSensor(SENSOR_2, SENSOR_LIGHT);
while (FastTimer(0)<=kyuumovetime)
if (SENSOR_2 < kuro){ //黒以下なら
hidari;
}
else if (SENSOR_2 < tyottokuro){ //黒〜ちょっと黒なら
hidarimae;ClearTimer(0);
}
else if (SENSOR_2 < tyottosiro){ //ちょっと黒〜ちょっ...
mae; ClearTimer(0);
}
else if (SENSOR_2 < siro){ //ちょっと白〜白なら
migimae;ClearTimer(0);
}
else if (SENSOR_2 > siro){ // 白以上なら
migi;ClearTimer(0);
}
Wait(STEP);
}
sub yurukutadoru() //緩いカ...
{
ClearTimer(0);
SetPower(OUT_AC,1);
SetSensor(SENSOR_2, SENSOR_LIGHT);
while (FastTimer(0)<=yuruimovetime)
if (SENSOR_2 < kuro){ //黒以下なら
hidari;
}
else if (SENSOR_2 < tyottokuro){ //黒〜ちょっと黒なら
hidarimae;ClearTimer(0);
}
else if (SENSOR_2 < tyottosiro){ //ちょっと黒〜ちょっ...
mae;ClearTimer(0);
}
else if (SENSOR_2 < siro){ // ちょっと白〜白なら
migimae;ClearTimer(0);
}
else if (SENSOR_2 > siro){ // 白以上なら
migi;ClearTimer(0);
}
PlaySound(SOUND_UP);
}
sub tomaru() //止まる
{
PlaySound(SOUND_DOWN);
Off(OUT_AC);
Wait(100);
hidarimae;
Wait(75);
mae;
Wait(40);
}
sub tyokkakutadoru() ...
{
ClearTimer(0);
SetPower(OUT_AC,0);
SetSensor(SENSOR_2, SENSOR_LIGHT);
while (FastTimer(0)<=tyokkakumovetime)
if (SENSOR_2 < kuro){ //黒以下なら
hidari;
}
else if (SENSOR_2 < shikii){ //黒〜閾値なら
hidarimae;ClearTimer(0);
}
else if (SENSOR_2 < siro){ // 閾値〜白なら
migimae;ClearTimer(0);
}
else if (SENSOR_2 > siro){ // 白以上なら
migi;ClearTimer(0);
}
Wait(STEP);
}
task main()
{
tadoru();
PlaySound(SOUND_UP);//1回目
migimae;
Wait(10);
hidari;
Wait(40);
tadoru();
tomaru();//2回目
yurukutadoru();//3回目
Off(OUT_C);
OnFwd(OUT_A);
Wait(80);
yurukutadoru();//4回目
Off(OUT_A);
OnFwd(OUT_C);
Wait(80);
tadoru();
PlaySound(SOUND_UP);//5回目
migimae;
Wait(10);
hidari;
Wait(40);
kyuutadoru();
tadorusecond();
tadorusecond();
PlaySound(SOUND_UP);//6回目
tadorusecond();
PlaySound(SOUND_DOWN);
Off(OUT_AC);
Wait(100);
migimae;
Wait(25);
mae;
Wait(20);
tadorusecond();
PlaySound(SOUND_DOWN);//7回目
Off(OUT_AC);
Wait(100);
migimae;
Wait(25);
mae;
Wait(20);
tadoru();
tomaru();//8回目
yurukutadoru();//9回目
Off(OUT_C);
OnFwd(OUT_A);
Wait(80);
yurukutadoru();//10回目
Off(OUT_A);
OnFwd(OUT_C);
Wait(80);
tadoru();
PlaySound(SOUND_UP);//11回目
migimae;
Wait(10);
hidari;
Wait(40);
tadoru();
mae;
Wait(250);
Off(OUT_AC);//ゴール
}
*交差点の判断 [#x163f1fe]
交差点の判断はセンサーが黒色を認識している時間を計って行...
*プログラムの工夫点 [#d8f05fe2]
カウンターは使わず、タスクメインに順番通りに指令を書き並...
*反省点 [#k0355a59]
今回光センサを使った課題で、道の識別に必要な色の値の設定...
ページ名: