センサーの値を読む

新しいプロジェクトを作る

まず、新しいプロジェクトを作る必要があります。

二つ目のプロジェクト(新しいプロジェクト)を作る方法

その前に、teratermがインストールされていない場合(推奨機には入っています)、ここからダウンロードしインストールしておく必要があります。

センサーの回路図は以下のようになっています。

回路の簡単な説明
PI1は赤外線LEDです。これは電源から150Ωの抵抗を介して電流が流れて、一定の目に見えない赤外線で光ります。その左側にある対になっている素子はフォトトランジスタと言い、光が入力されると電流が流れる仕組みになっています。もし、赤外線が入力されていない場合(反射光が無い場合、黒のラインを見つけたとか)は、VR1とR2の抵抗に流れる電流がほとんど無いので、TR1のベース電圧は0に近くなります。すると、このトランジスタはスイッチオフ状態になり、R4には電流が流れず0Vに近い電圧になります。
次に、フォトトランジスタに光が入力されると電流が流れ、この電流をIとすると(VR1+R2)Iの電圧降下が生じます。この電圧によりTR1のベースにIbが流れ、R4にはIE=hfe×Ibの電流が流れ、R4の両端にはOUT=IER4の電圧が生じます。この電圧はフォトトランジスタに入射する光の量に比例します。
黒は0V、光が強いと最大Vccの値になることが分ります。

A/Dコンバーターの値を読む



プロジェクトを作った直後のmain関数の入っているファイルの中身は以下のようになっています。
これはひな形なので、今回は使いません。従って全部書き直します。



以下のようにADtest.cの中身を書き直します。

A/Dコンバーターの値を読む
// teratermを接続断にしておく
// プログラム転送
// CPUボードスイッチオフ
// CPUボードスイッチオン
// teraterm 新しい接続

/*インクルード***********************************************************/
#include "vs-wrc003.h"

void startInit(char* str)
{
  const BYTE MainCycle = 100;
  Init((BYTE)MainCycle);        //CPUの初期設定
  InitSci3(CBR_9600,non,1);     // シリアル転送設定(printf)
  Mtr_Run(0, 0, 0, 0);          // これをやらないと色々と動かない。モーター停止
  while(!getSW());              // スイッチが押されるまで待つ
  printf(str);
}

void main(void)
{
  int left, right;
 
  startInit("A/D converter Check");
  LED(1);                       // LED緑を点け、オレンジは消す
  while(1){
    left  = AdRead(0);
    right = AdRead(1);
    printf("left=%d right=%d\n", left, right); 
  }
}
 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 ADの0番目のデータを読む
28 ADの1番目のデータを読む
29 結果をteratermに表示させる。
30 
31 


メニューのビルドアイコンをクリックするか、F7を押すとビルドされます。



正常にビルドされると以下のように「0 Errors, 0 Warnings」と表示されます。





実行するにはソースプログラムの頭に書いてあるように、
  1. teratermが接続されていたら、接続断にしておく。これは、同じ通信路(USBケーブル)をもちいるので、teratermが握っていたらfdtがプログラムを転送できないからです。あるいは、teratermを終了させておく。
  2. fdtを用いてプログラムを転送する。新しいファイルを送りますから、ファイルを正しく指定してください。
  3. 転送が終わったら、ケーブルをteraterm側に渡すために「デバイスとの切断」で接続を切っておきます。
  4. teraterm側のUSBドライバが認識できるように、CPUボードの電源を一度OFFにする。
  5. teraterm側のUSBドライバに認識させるために、CPUボードの電源をONにする。
  6. teratermを起動すると以下のメニューが出ます。
    シリアルポートを選び、Silicon Labs~というのを選び、OKをクリックします。

  7. CPUボード上の押しボタンを押すと、ADコンバーターで計測した数字が表示されます。

  8. 白とか黒をセンサーの前に置いて、数字が変化することを確認すること。変化しない場合は、配線が間違っている可能性が高いので、おかしいと悩んでいないで、即刻電源を切り、USBケーブルを抜き、配線をチェックします。電源を入れたままだと壊れる可能性があります。 壊れているものを、おかしいおかしいとチェックし続けないように。
    正しい判断が重要です。
    特に、何も表示されないとかは危険です。

白と黒との境目を決める

上記のプログラムを用い、実際に用いるコースの白の部分の時の値と黒の部分の値を計測します。白の時の値をx、黒の時の値をyとすれば、xとyの真ん中、つまり(x+y)/2ぐらいを境目(閾値、スレッショルド、threshold)とします。2つあるいは4つのセンサー全てを調べて、これら全てが判断できる値を探します。