前へ 目次 次へ
A/D変換を行う(スキャンモード)
 
フォトレフレクタを付け足す
 

 ライントレースをするには、フォトレフレクタが1個だけでは足りません。 ここでは、3個のフォトレフレクタを使い、ラインを検出するようにしましょう。

以前と同様に、 フォトレフレクタの回路を付け足します。 電源とグランドは共通にし、出力はCN1-10(AN0)とCN1-8(AN2)に繋ぎます。 フォトレフレクタは等間隔に並ぶようにしたほうが良いでしょう。

 
スキャンモード
 

 3つのフォトレフレクタからの電圧をA/D変換し、 上位1ビットを3つのLEDに表示するプログラムを作ってみましょう。 対応は以下のようにしてみました。

A/D変換LED
AN0(CN1-10)P50(CN1-14)
AN1(CN1- 9)P51(CN1-15)
AN2(CN1- 8)P52(CN1-16)

ここでは、順次連続してA/D変換するスキャンモードを使ってみましょう。

/*
  スキャンモードA/D変換を行う (adt02.c)
*/

#include<3664.h>

int main(void)
{
  AD.ADCSR.BIT.ADST = 0;      /* A/D変換停止 */
  AD.ADCSR.BIT.SCAN = 1;      /* スキャンモード */
  AD.ADCSR.BIT.CKS  = 1;      /* 高速変換 */
  AD.ADCSR.BIT.CH   = 2;      /* AN0-AN2 */
  AD.ADCSR.BIT.ADST = 1;      /* A/D変換スタート */
  IO.PCR5=0x07;

  while(AD.ADCSR.BIT.ADF==0){}

  while(1){
    IO.PDR5.BIT.B0=(AD.DRA >> 15) ;
    IO.PDR5.BIT.B1=(AD.DRB >> 15) ;
    IO.PDR5.BIT.B2=(AD.DRC >> 15) ;
  }
  return(0);
}

 
スキャンモードの使い方
 

AD.ADCSR.BIT.SCAN = 1

このビットを1にするとスキャンモードになります。


AD.ADCSR.BIT.CH = 2

どのポートを連続スキャンするか指定します。 以下の設定が可能です。

AD.ADCSR.BIT.CHA/D変換
0AN0
1AN0-AN1
2AN0-AN2
3AN0-AN3
4AN4
5AN4-AN5
6AN4-AN6
7AN4-AN7


黒い線を引いた紙の上にセンサを持っていき、 黒い線の上にあるセンサに対応したLEDが、 つかないようにできることを確認してみましょう。

 
やってみよう
 

  • AN1のセンサの値より、AN0やAN2のセンサの値のほうが大きいときに、 対応するLEDが点灯するプログラムを作ってみよう。
  • 上記プログラムが、10秒だけ動作するように変更してみよう(タイマA)。

 
2003/06/03(Tue)
AKI-H8/3664 QFP版のトップページへ
トップページへ
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送