2017a/Member

目次

課題

課題概要

A4の紙に松本の大学生活を表す7画以上の漢字一文字を書くロボットを製作する。

詳しくはこちら

相方のページはこちら

選んだ漢字・理由

「晴」 松本はあまり雨が降らず、快晴や晴れの日が多いのでこの漢字にした。

機体の説明

全体

縦方向に移動するロボット、その上を横方向に移動するロボットからできている。この形にしようと決めた当初は、脱輪を防ぐためペンを持ったロボットをレールからぶら下げるつもりだった。しかし高さ、安定性に問題があったためこの形になった。また、この形で脱輪を防ぐために、レールの内幅とペンの可動部の幅を同じにした。

zenntaizou.pngre-ru.png

縦移動ロボット

NXT本体を有するパーツ。本体右後方にモーターが付いている。 レール部分を長くすることで横幅の大きい漢字にも対応できる。 dodai.JPG

横移動ロボット

後ろのコックピット、パイロットは機体の重心を中心にするためにつけている。これがなければ前方に倒れてしまう。 yokokadou.JPG

ペン可動部

ペンを輪ゴムを使いここにつける。ペン先が円を描くように上下する。 pennkadou.png

プログラムの説明

書き方

下の写真のような書き順にした。ほとんど普通の書き順だが、少しだけ変えた。 右から左へ横向きに線を引いた方が短時間で書き終えることができるが、機体の特性上、右から左へ横向きに線を引くと上手に線が引けないので横向きの線は左から右へ引くようにしている。 kakijunn.JPG

プログラム

ペンの上げ下げの動作は、あらかじめ定義しておいた。

#define pen_down OnFwd(OUT_A,25);Wait(180);Off(OUT_A);//ペンを下げる
#define pen_up OnFwd(OUT_A,-25);Wait(220);Off(OUT_A);//ペンを上げる

一画ごとにサブルーチンを作った。2画目と10画目、6画めと7画目は動きが同じなので同じサブルーチンを使用している。

sub ONE()
{
  pen_down;
  OnFwd(OUT_C,-25);
  Wait(620);
  Off(OUT_C);
  pen_up;
}
sub TWO_TEN()
{
  OnFwd(OUT_C,25);
  Wait(620);
  Off(OUT_C);
  pen_down;
  OnFwd(OUT_B,-35);
  Wait(400);
  Off(OUT_B);
  OnFwd(OUT_C,-25);
  Wait(620);
  Off(OUT_C);
  pen_up;
}  
sub THREE()
{
  OnFwd(OUT_C,25);
  Wait(300);
  Off(OUT_C);
  OnFwd(OUT_B,35);
  Wait(400);
  Off(OUT_B);
  pen_down;
  OnFwd(OUT_B,-35);
  Wait(400);
  Off(OUT_B);
  OnFwd(OUT_B,-35);
  pen_up;
}
sub FOUR()
{ 
  OnFwd(OUT_B,35);
  Wait(425);
  Off(OUT_B);
  OnFwd(OUT_C,-25);
  Wait(325);
  Off(OUT_C);
  pen_down;
  OnFwd(OUT_B,-35);
  Wait(400);
  Off(OUT_B);
  pen_up;
}
sub FIVE()
{
  OnFwd(OUT_B,-35);
  Wait(200);
  Off(OUT_B);
  OnFwd(OUT_C,25);
  Wait(840);
  Off(OUT_C);
  pen_down;
  OnFwd(OUT_B,-35);
  Wait(520);
  Off(OUT_B);
  pen_up;
}
sub SIX_SEVEN()
{
  OnFwd(OUT_C,-25);
  Wait(180);
  Off(OUT_C);
  OnFwd(OUT_B,35);
  Wait(520);
  Off(OUT_B);
  pen_down;
  OnFwd(OUT_B,-35);
  Wait(520);
  Off(OUT_B);
  pen_up;
}
sub EIGHT()
{
  OnFwd(OUT_B,35);
  Wait(265);
  Off(OUT_B);
  pen_down;
  OnFwd(OUT_C,25);
  Wait(528);
  Off(OUT_C);
  pen_up;
} 
sub NINE()
{  
  OnFwd(OUT_B,35);
  Wait(130);
  Off(OUT_B);
  OnFwd(OUT_C,-25);
  Wait(612);
  Off(OUT_C);
  pen_down;
  OnFwd(OUT_C,-25);
  Wait(620);
  Off(OUT_C);
  pen_up;
}  
sub ELEVEN()
{
  OnFwd(OUT_C,25);
  Wait(410);
  Off(OUT_C);
  OnFwd(OUT_B,35);
  Wait(400);
  Off(OUT_B);
  pen_down;
  OnFwd(OUT_B,-35);
  Wait(395);
  Off(OUT_B);
  pen_up;
}
sub TWELVE()
{
  OnFwd(OUT_C,-25);
  Wait(195);
  Off(OUT_C);
  OnFwd(OUT_B,35);
  Wait(380);
  Off(OUT_B);
  pen_down;
  OnFwd(OUT_B,-35);
  Wait(395);
  Off(OUT_B);
  pen_up;
} 

全ての動作がサブルーチンですでに定義されているのでtask mainは短くなった。

task main()
{
  ONE();
  TWO_TEN();
  THREE();
  FOUR();
  FIVE();
  SIX_SEVEN();
  SIX_SEVEN();
  EIGHT();
  NINE();
  TWO_TEN();
  ELEVEN();
  TWELVE();
}

書いた字

上手く止まらずにつきだした部分が多々あったり、青の上の部分が揃わなかったりしたが、「晴」と読むことができる字にはなった。 kaitaji.JPG

感想・反省

サブルーチンを作っておくことで動作確認、変更は非常にやりやすかった。しかし、レール部分を凹凸のあるパーツにしたせいか字の形は毎回異なっていた。次回はそういうことも考えつつ、安定した機体を作ったいきたい。 機体のおかげでプログラミングは想像していたよりは難しくなかった。次回はこう簡単にはいかないと思うので覚悟していきたい。 ホームページ作りは想像より難しく時間がかかった。


添付ファイル: filezenntaizou.png 77件 [詳細] fileyokokadou.JPG 52件 [詳細] filere-ru.png 69件 [詳細] filepennkadou.png 70件 [詳細] filekakijunn.JPG 67件 [詳細] filekaitaji.JPG 50件 [詳細] filedodai.JPG 58件 [詳細] fileDSC_0181zenntaizou.png 30件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-05-25 (木) 17:06:40 (816d)