Hatena::ブログ(Diary)

熊工房 ohgumaの腹凹ませたい日記

2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |

2016-12-04

[] C-Styleで使用中の変数を探す。

一度ビルドし、テキストエディタでビルドパスにある「User.c」を開く。

変数Aが使われているかどうか調べる場合は、キーワード「VAR_A」で検索する。

以下同様に変数Bの場合「VAR_B」、…、変数Zの場合「VAR_Z」とする。


メモ帳ではいろいろ不便なので、テキストエディタを勧める。

2016-11-18

[] C-Style での注意点

TJ3BのC-StyleでCNの値で演算する場合の注意点。

f:id:ohguma:20161119193315p:image

次の(1)から(4)はそれぞれ同じ計算をしているようで、シリアル表示すると計算結果が異なる。意図する答えになっているのは(3)と(4)。

  • (1)79,80行
  • (2)81,82行
  • (3)83-85行
  • (4)86,87行

ちなみにセンサーモニタではCN3は「1020」、80,82,85,87行は同じ内容のprintf()。


変数ブロックでの変数「A」センサ値「CN1」は、C-CodeではgV[VAR_A]、gAD[CN1]と書けるが、もともとののgAD、gVのデータ型が異なるために発生する。

  • gAD → unsigned int(符号なしint)
  • gV → long(符号ありlong)

(3)のようにセンサ値を取得する行と計算する行を分けるか、(4)のようにデータ型を明示する必要がある。

2016-11-17

[]C-Styleでmath.hなど(その2)

C-Codeを使えば三角関数も使える。ただし、遅い。

f:id:ohguma:20161118004213p:image


速度を単純に上げたいなら、より速いマイコンボードに替えるのが楽だと思う。TJ3Bを使いたいなら、プログラムを工夫するしかない。


速度にこだわるのは、理由がある。ロボットのスピードが毎秒1mとすると、0.1秒=100ミリ秒で10cm、0.01秒=10ミリ秒で1cm移動する。幅2cmのラインを1つのセンサで検知しようとすると、0.02秒=20ミリ秒以内にチェックを繰り返す必要がある。

ところが、TJ3Bでは1つのPINGを確認するだけ相当の時間がかかり、その他の処理も考慮するとその期間内にチェックを繰り返すことは難しい。処理速度を上げるためにPINGを必要時以外には使わないなどの対応を考慮する必要がある。

2016-11-15

[]TJ3Bマニュアル

新しいC-Styleに合わせた更新が行われた模様。