AD変換機能を利用して、アナログポートの電圧を読み取り、文字LCDに表示するプログラムを示します。文字LCDの利用法に関しては、「文字LCDの利用」を参照してください。
AD変換機能は、analogRead()関数で簡単に利用することができます。analogRead()関数の引数には、電圧を読み取りたいアナログポート名AN(n)を指定してください。analogRead()は読み取った電圧により0から1023の値を返します。analogReference()関数で特別に指定しない限り、0はGNDの0V、1023は電源電圧VDDの約3.3Vに対応します。
PIC24F-MOD-GA002Uには、AD変換の電圧リファレンスとして、正確な2.5Vを出力するMCP1525を搭載することができます。EXTERNALを引数に指定してanalogReference()関数を呼び出すと、以後電圧リファレンスとしてMCP1525が出力する2.5Vが上限の基準電圧と指定利用される様になり、analogRead()が返す0は0V、1023は2.5Vに対応するようになります。
以下にAN1の電圧をAD変換して読み取り文字LCDに表示するプログラム例を示します。
adc.c: AD変換の利用
#include "picsys24.h"
void setup()
{
CLCD_init(RB(4), RB(5), RB(0), RB(1), RB(2), RB(3)) ;
// analogReference(EXTERNAL) ; // 電圧リファレンスMCP1525を利用する場合
}
char buf[20] ;
void loop()
{
delayMilliseconds(500) ;
ltos(buf, analogRead(AN(1)), 10) ;
CLCD_pos(0, 0) ;
CLCD_puts(" ") ; // 表示を一度スペースで消す
CLCD_pos(0, 0) ;
CLCD_puts(buf) ;
}
PIC24F-MOD-GA002Uに電圧リファレンスMCP1525を搭載した場合、その出力電圧はAN0に接続されています。analogReference(EXTERNAL)関数を利用して外部電圧リファレンスを利用するように指定すると、AN0はVREF+として外部電圧リファレンスの入力ピンとして利用されます。しかしながら、外部電圧リファレンスを使用するように設定しなければ、AN0を通常のアナログピンとして利用し、MCP1525の電圧をAD変換して読み取ることができます。
以下にそのプログラムを示します。
adcref.c: AD変換の利用
#include "picsys24.h"
void setup()
{
CLCD_init(RB(4), RB(5), RB(0), RB(1), RB(2), RB(3)) ;
}
char buf[20] ;
void loop()
{
delayMilliseconds(500) ;
ltos(buf, analogRead(AN(0)), 10) ;
CLCD_pos(0, 0) ;
CLCD_puts(" ") ; // 表示を一度スペースで消す
CLCD_pos(0, 0) ;
CLCD_puts(buf) ;
}