忍者ブログ
RoboCup Junior Japan Rescue Kanto OB

             2005~2013
[158]  [157]  [156]  [155]  [154]  [153]  [152]  [151]  [150]  [149]  [148
明日は工場見学。

学校8時集合だそうです。

遅刻した子は置いてけぼり・・・

置いてけぼり食らうと、恐怖の課題地獄なんだとか。コワイコワイ。

明日は何人地獄を見ることになるでしょうかね(笑)


今日の記事は、またまたNBCについてです。

とりあえず一番基礎的なライントレースができるようになった。という話を以前しました。

まぁこのライントレースプログラムについてちょっと書いていこうと思います。

今回、作製したプログラムは、ほんっとにライントレースの基本だけを行ったプログラムです。

センサーの数は3つ。ギャップや直角などの対応プログラムは一切入っていません。

っていうかそんなもの入れる気力がありません。


というのも・・・プログラムがこんなに長くなってしまうんです(笑)

#include "NXTDefs.h"
 
//sensor set
#define kurosiro1 450
#define kurosiro2 450
#define kurosiro3 380
#define sirogin1 630
#define sirogin2 670
#define sirogin3 630
 
//vl set
dseg segment
    motorA byte  100
    motorC byte  100
    curveA byte  100
    curveC byte  100
    sensor_1vl sword
    sensor_2vl sword
    sensor_3vl sword
dseg ends
 
 
//fnc set
subroutine FRONT
OnFwd(OUT_A,motorA)
OnFwd(OUT_C,motorC)
return
ends
 
subroutine BACK
OnRev(OUT_A,motorA)
OnRev(OUT_C,motorC)
return
ends
 
subroutine RIGHT
OnFwd(OUT_A,curveA)
OnRev(OUT_C,curveC)
return
ends
 
subroutine LEFT
OnRev(OUT_A,curveA)
OnFwd(OUT_C,curveC)
return
ends
 
 
//main
 
thread main
dseg segment
 
dseg ends
 
 
SetSensorType(IN_1,IN_TYPE_REFLECTION)
SetSensorType(IN_2,IN_TYPE_REFLECTION)
SetSensorType(IN_3,IN_TYPE_REFLECTION)
 
Loop:
ReadSensor(IN_1,sensor_1vl)
sub sensor_1vl, kurosiro1,sensor_1vl
ReadSensor(IN_2,sensor_2vl)
sub sensor_2vl, kurosiro2,sensor_2vl
ReadSensor(IN_3,sensor_3vl)
sub sensor_3vl, kurosiro3,sensor_3vl
NumOut(1,LCD_LINE1,sensor_1vl)
NumOut(1,LCD_LINE2,sensor_2vl)
NumOut(1,LCD_LINE3,sensor_3vl)
 
call FRONT
 
brtst GT,Loop,sensor_2vl
 
brtst GT,curvel,sensor_1vl
brtst GT,curver,sensor_3vl
 
 
jmp Loop
  
curvel:
call LEFT
jmp Loop
 
curver:
call RIGHT
jmp Loop
  
 
endt


これは、只普通に右のセンサーが黒くなったら右回転、

左のセンサーが黒くなったら左回転というプログラムしか入っていません。

なので実質使っているセンサーは2つですね(笑)


ちゃんと楽してNXCと同じ関数を使用したのにこの長さって・・・(笑)

やっぱりNXCと比べると格段に難しくなっているのがわかります。

でも、関数はNXCと同じですし、そもそもどういった動きをするかはわかっている訳なので、

見れば、大体何がどうなっているのかはわかりますよね。NXCの経験者なら・・・。


まぁこの辺は簡単だからいいのですけど、例えば配列だったり、関数に引数を使ってみたり、戻り値・・・なんてことになると


途端に意味不明になります。(それがASMです(笑))

これで本当にレスキューのプログラムが書けるのか・・・とてつもなく不安です。


あ。このプログラムのファイル挙げときますね。

それではー。


(^・ω・)ノRadiumProduction in RoboCupJunior
Comments
※コメントは内容確認後に手動で公開するようにしております。反映までしばらくお待ちください。
Your Name
Title
color
Comment
 


無題
Mr.fatty
恐ろしいですね。大会のプログラムを書いたらどうなることやら。


工場見学って、北棟の総合工場ですか?(笑)
2011/05/23(Mon)22:38:54

無題
Luz
Mr.fatty様

麻雀をやっていると見せかけてお・い・て↑(ここアクセント(笑))、実はこのプログラムを書いていたんですよー。

大会用プログラムなんてとてもまともじゃ作れませんよ(笑)
今年大会で使ったNXCのプログラムをNBCで同じことができるプログラムに書きかえようと思ったら
恐らく10000行超えますね(笑)

しかもジャンプばっかだから訳が分からなくなるでしょうね。
分岐も、ループも、全部ジャンプですから(笑)

うちの工場に今更行ってどうするんですか(笑)
余談ですけどあの工場の裏は粗大ゴミの不法投棄場所として有名だったんですよ。

今は綺麗に片付いていますが(笑)
2011/05/24(Tue)00:44:54
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新CM
[05/09 ONE RoboCuper]
[05/07 HDD ほしいよー]
[04/21 ブラック3辛]
[12/26 bols-blue]
[06/08 ONE RoboCuper]
かうんた
カウンター カウンター
らじぷろ目次
らじぷろ検索機
プロフィール
HN:
Luz
性別:
男性

PR

忍者ブログ 2007-2021,Powered by Radium-Luz-Lα+-Rescatar in RadiumProduction [PR]


Related Posts Plugin for WordPress, Blogger...