5月12日

人生初めてのプログラミング

task main()
{
OnFwd(OUT_A+OUT_C);
Wait(300);
Off(OUT_A+OUT_C);
}

理解できたこと

前回は全く分からなかったプログラミングの送信方法が理解できて良かった。 ホームページを作成すると聞き、えらく難しい事をやるんだな〜と感じていたが、思いのほか簡単で理解しやすかった。

分からなかったこと

まだ専門用語がイマイチ。少しでも勉強し、理解できるように心がけたい。

5月19日

自宅のパソコンでプログラミングしようとしたらエラーが発生。先生に救援を頼むが解決せず、自分で適当に操作したら問題解決。 早速そんなひねくれたパソコンで作ったプログラムを作成。

課題1 木を書くプログラム

#define TURN_TIME 170        //180度回転
#define TURN_TIME2 85        //90度回転
#define PEN 5                //ペンの上下時間
task main()
{
OnFwd (OUT_B);
Wait (PEN);
Off(OUT_B);
OnFwd (OUT_A+OUT_C);
Wait (200);
OnRev(OUT_A);OnFwd(OUT_C);
Wait(TURN_TIME);
Off(OUT_A+OUT_C);
OnRev(OUT_B);
Wait(PEN);
Off(OUT_B);
OnFwd(OUT_A+OUT_C);
Wait(100);
OnRev(OUT_C);
Wait(TURN_TIME2);
OnFwd(OUT_C);
Wait(75);
OnRev(OUT_A);
Wait(TURN_TIME);
Off(OUT_A+OUT_C);
OnFwd(OUT_B);
Wait(PEN);
Off(OUT_B);
OnFwd(OUT_A+OUT_C);
Wait(275);
Off(OUT_A+OUT_C);
OnRev(OUT_B);
Wait(PEN);
Off(OUT_B);
OnRev(OUT_A);OnFwd(OUT_C);
Wait(TURN_TIME);
OnFwd(OUT_A);
Wait(200);
OnRev(OUT_A);
Wait(TURN_TIME);
Off(OUT_A+OUT_C);
OnFwd(OUT_B);
Wait(PEN);
Off(OUT_B);

SetPower (OUT_C,0);
OnFwd (OUT_A+OUT_C);
Wait (200);
Off(OUT_A+OUT_C);
SetPower(OUT_C,7);
OnRev(OUT_B);
Wait(PEN);
Off(OUT_B);
OnRev(OUT_A);OnFwd(OUT_C);
Wait(TURN_TIME);
Off(OUT_A);
SetPower(OUT_A,0);
OnFwd(OUT_A+OUT_C);
Wait(200);
Off(OUT_A+OUT_C);

}

まだ未完成。回転の時間が違うせいか、走っているうちに角度が変わっていく。
また、走行中の振動で上手く字が書けないため、改良が必要。クラッチとなる部分を作り、常にモータを回転させてみようと思う。

5月26日

寝る間も惜しんで作った書道ロボットのお披露目。
初出陣は何故か二画目からペンが下りず、途中退場。皆の視線が痛い…
大学のパソコンで最終調整をしようとしたが、なぜだか送信できないトラブルが発生。だからMacは苦手なんです…
後に先生が手助けしてくれて、無事解決。どうやらページに貼り付けたものをそのままコピーすると全角の英語になり、認識できなくなるようだ。
そして最終調整をしていざ2度目の出陣。結果としては・・・やはり気まぐれなためか、三画目と四画目が離れてしまった。
(ここのページを参照2006a/A2/課題1右
次からはセンサーを使うとの事。ちゃんと追いつけるよう、頑張りたいと思う。

壁に触れると曲がるプログラム

task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH);
OnFwd(OUT_A+OUT_C);
while(true)
 {
  if(SENSOR_1+SENSOR_3==1)
   {
   OnRev(OUT_A+OUT_C);Wait(30);
   OnFwd(OUT_A);Wait(90);
   OnFwd(OUT_C);
   }
 }
}

6月2日

壁に触れると曲がるプログラム(反射バージョン)

task main()
{
SetSensor(SENSOR_1,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH);
OnFwd(OUT_A+OUT_C);
while(true)
{
 if(SENSOR_1==1)
  {
  OnRev(OUT_A+OUT_C);Wait(30);
  OnFwd(OUT_A);Wait(130);
  OnFwd(OUT_C);
  }
  if(SENSOR_3==1)
  {
  OnRev(OUT_A+OUT_C);Wait(30);
  OnFwd(OUT_C);Wait(130);
  OnFwd(OUT_A);
  }
 }
}

6月9日

ライントレースをするロボット(試作)

#define light 40
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
OnFwd(OUT_A+OUT_C);
while(1)
{
if(SENSOR_1<light)
 {
 Float(OUT_C);
 }
if(SENSOR_3<light)
 {
 Float(OUT_A);
 }
if(SENSOR_2==1);
 {
 OnFwd(OUT_A);OnRev(OUT_C);Wait(180);
 }
}
}

ライントレースロボ

#define light 35
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
OnFwd(OUT_B);
while(1)
{
if(SENSOR_1<light)
 {
 Float(OUT_C);
 }else{
 OnFwd(OUT_A+OUT_C);
 }
if(SENSOR_3<light)
 {
 Float(OUT_A);
 }else{
 OnFwd(OUT_A+OUT_C);
 }
if(SENSOR_2==1);
 {
 OnFwd(OUT_A);OnRev(OUT_C);Wait(180);
 }
}
}

ライントレースロボ2

#define light 35
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
OnFwd(OUT_B);
while(1)
{
if(SENSOR_1<light)
 {
 OnRev(OUT_A+OUT_C);Wait(30);
 OnFwd(OUT_C);Wait(30);
 OnFwd(OUT_A);
 }else{
 OnFwd(OUT_A+OUT_C);
 }
if(SENSOR_3<light)
 {
 OnRev(OUT_A+OUT_C);Wait(30);
 OnFwd(OUT_A);Wait(30);
 OnFwd(OUT_C);
 }else{
 OnFwd(OUT_A+OUT_C);
 }
if(SENSOR_2==1);
 {
 OnFwd(OUT_A);OnRev(OUT_C);Wait(180);
 }
}
}

光に向かって進むロボット

#define TURN_TIME 360
int light_max=0;
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
OnFwd(OUT_A);OnRev(OUT_C);
while(FastTimer(0)<TURN_TIME)
{
if(SENSOR_1>light_max)
 {
 light_max=SENSOR_1;light_max=FastTimer(0);
 }
}
while(FastTimer(0)<light_max)
{
OnFwd(OUT_A);OnRev(OUT_C);
}
Off(OUT_A+OUT_C);
}

光に向かって進むロボット(完成版)

#define TURN_TIME 340 int light_max=0; task main()

{
SetSensor(SENSOR_2,SENSOR_LIGHT);
ClearTimer(0);
OnFwd(OUT_A);
OnRev(OUT_C);
while(FastTimer(0)<TURN_TIME)
 {
 if(SENSOR_2>light_max)
 {
 light_max=SENSOR_2;light_max=FastTimer(0);
 }
 }
 ClearTimer(0); 
 while(FastTimer(0)<light_max)
  {
  OnFwd(OUT_A);OnRev(OUT_C);
  }
Off(OUT_A+OUT_C);

}

課題3

#define TURN_TIME 310
int light_max=0;
#define Do 523
#define Re 587
#define Mi 659
#define Fa 698
#define Sol 784
#define ma 55
#define k 50
task play_music()
{
PlayTone(Do,k);Wait(ma);
PlayTone(Re,k);Wait(ma);
PlayTone(Mi,k);Wait(ma);
PlayTone(Fa,k);Wait(ma);
PlayTone(Mi,k);Wait(ma);
PlayTone(Re,k);Wait(ma);
PlayTone(Do,k);Wait(100);
PlayTone(Mi,k);Wait(ma);
PlayTone(Fa,k);Wait(ma);
PlayTone(Sol,k);Wait(ma);
PlayTone(880,k);Wait(ma);
PlayTone(Sol,k);Wait(ma);
PlayTone(Fa,k);Wait(ma);
PlayTone(Mi,k);Wait(100);
PlayTone(Do,k);Wait(100);
PlayTone(Do,k);Wait(100);
PlayTone(Do,k);Wait(100);
PlayTone(Do,k);Wait(100);
PlayTone(Do,20);Wait(25);
PlayTone(Do,20);Wait(25);
PlayTone(Re,20);Wait(25);
PlayTone(Re,20);Wait(25);
PlayTone(Mi,20);Wait(25);
PlayTone(Mi,20);Wait(25);
PlayTone(Fa,20);Wait(25);
PlayTone(Fa,20);Wait(25);
PlayTone(Mi,30);Wait(50);
PlayTone(Re,30);Wait(50);
PlayTone(Do,30);Wait(50);
}
task main()

{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
Wait(100);
while(1)
 {
 if(SENSOR_1&&SENSOR_3<55)
  {
  start play_music;
  ClearTimer(0);
  OnFwd(OUT_B);
  while(FastTimer(0)<TURN_TIME)
   {
   if(SENSOR_1>light_max)
    {
    light_max=SENSOR_1;light_max=FastTimer(0);
    }
   }
   OnRev(OUT_B);Wait(243);Off(OUT_B);
   stop play_music;
  ClearTimer(0);
  while(FastTimer(0)<light_max*143/100)
   {
   OnFwd(OUT_C);OnRev(OUT_A);
   }
  OnFwd(OUT_A);
  }
  if(SENSOR_1&&SENSOR_3>55)
  {
  OnFwd(OUT_A+OUT_C);
  }
 }
}

課題3本体固定バージョン

#define TURN_TIME 400
int light_max=0;
#define Do 523
#define Re 587
#define Mi 659
#define Fa 698
#define Sol 784
#define ma 55
#define k 50
task play_music()
{
PlayTone(Do,k);Wait(ma);
PlayTone(Re,k);Wait(ma);
PlayTone(Mi,k);Wait(ma);
PlayTone(Fa,k);Wait(ma);
PlayTone(Mi,k);Wait(ma);
PlayTone(Re,k);Wait(ma);
PlayTone(Do,k);Wait(100);
PlayTone(Mi,k);Wait(ma);
PlayTone(Fa,k);Wait(ma);
PlayTone(Sol,k);Wait(ma);
PlayTone(880,k);Wait(ma);
PlayTone(Sol,k);Wait(ma);
PlayTone(Fa,k);Wait(ma);
PlayTone(Mi,k);Wait(100);
PlayTone(Do,k);Wait(100);
PlayTone(Do,k);Wait(100);
PlayTone(Do,k);Wait(100);
PlayTone(Do,k);Wait(100);
PlayTone(Do,20);Wait(25);
PlayTone(Do,20);Wait(25);
PlayTone(Re,20);Wait(25);
PlayTone(Re,20);Wait(25);
PlayTone(Mi,20);Wait(25);
PlayTone(Mi,20);Wait(25);
PlayTone(Fa,20);Wait(25);
PlayTone(Fa,20);Wait(25);
PlayTone(Mi,30);Wait(50);
PlayTone(Re,30);Wait(50);
PlayTone(Do,30);Wait(50);
}
task main()      
{
SetSensor(SENSOR_1,SENSOR_LIGHT); 

while(1)
 {
 if(SENSOR_1<50)
  {
  start play_music;
  ClearTimer(0);
  OnFwd(OUT_A);
  OnRev(OUT_C);
  while(FastTimer(0)<TURN_TIME)
   {
   if(SENSOR_1>light_max)
    {
    light_max=SENSOR_1;light_max=FastTimer(0);
    }
   }       
  ClearTimer(0);
  while(FastTimer(0)<light_max)
   {
   OnFwd(OUT_A);OnRev(OUT_C);
   }
  OnFwd(OUT_C);
  } 
  if(SENSOR_1>50)
  {
  stop play_music;
  OnFwd(OUT_A+OUT_C);
  }
  
 }
}

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-07-07 (金) 12:16:29