You are here

PICSYS18-XBEEのセンサースケッチ

センサーを利用するスケッチ

PICSYS18-XBEEにCLCD-BOOSTERを接続し、CLCD-BOOSTERに搭載されている温度センサーと光センサーを読み取って、文字LCDに値を出力する例をスケッチしていました。

PICSYS18-XBEEにCLCD-BOOSTERを接続する場合には、CLCD-BOOSTER中央のJP1のショートピンを左側の3.3V側にセットしてください。また、文字LCDのR/W端子を制御するJP3のショートピンは左側にセットしてR/Wをグランドに落とすようにしてください。

PICSYS18-XBEEには、単体でもセンシング機能が利用できるように、CLCD-BOOSTERと同じ温度センサーと光センサーが組み込まれているのですが、今回はJP4,JP5のショートピンをはずして、PICSYS18-XBEEのセンサーを切り離しています。

センサーを利用するスケッチの動作例

温度センサーを手で触ると、計測している温度がすぐに上昇していくのがわかります。


#include "picsys18.h"
#include 
#include 

void
setup()
{
    CLCD_initDefault() ;

    CLCD_putrs("Hello! MicroFan") ;
    CLCD_setCursor(3, 1) ;
    CLCD_putrs("PICSYS18-XBEE") ;
	
    analogReference(EXTERNAL) ; // 2.5V電圧リファレンスの利用
	
    delayMilliseconds(3000) ; // タイトルクレジットを見てね
}

void
loop()
{
    int v ;
    float temp ; // 温度の計算は実数で

    CLCD_clear() ;
	
    // 明るさセンサー
    v = analogRead(PHOTO_SENSOR) ;
    CLCD_setCursor(0, 0) ;
    CLCD_putrs("\261\266\331\273 ") ; // アカルサ
    CLCD_puti(v) ;

    v = analogRead(TEMP_SENSOR) ;

    // 温度センサー
    temp = 2.5 / 1024 * v ;  // 読み取った値を電圧に換算
    temp -= 0.4 ;  // 温度センサーの0度のオフセット:400mV
    temp /= 0.01953 ; // 1度あたり19.53mVの電圧増加

    CLCD_setCursor(0, 1) ;
    CLCD_putrs("\265\335\304\336 ") ; // オンド
    CLCD_putf(temp, 1) ;
    CLCD_putrs("\337C") ; // 度C

    delayMilliseconds(500) ;
}


文字LCDに出力する文字列を作成するCLCD_putrs()では、バックスラッシュもしくは円マークで始まるわけのわからない?数字の文字列を指定していますが、これは文字コードを8進数であらわしたもので、メッセージの出力に文字LCDのカタカナフォントを表示するために使っています。

文字LCDへの整数値の出力は、CLCD_puti(), 実数値の出力はCLCD_putf()を利用します。CLCD_putf()の2つ目の引数は、少数以下の表示桁数を指定します。

温度センサーの出力値の温度への換算法は、スケッチに書いている通りです。 :-)
PICSYS18-XBEE/CLCD-BOOSTERに利用しているマイクロチップ社の温度センサーMCP9701は、温度の絶対精度は少し甘いのですが、1度あたりの電圧の変化量が19.53mVと、よく利用されているLM35DZに比べるとほぼ2倍と大きいので、オペアンプなどで増幅しなくてもそれなりに楽しめます。また、3.3Vでも利用可能なので、最近の3.3V系のMCUで利用するのにはうってつけです。

開発ソフト: 
チップファミリー: 
技術: 
プログラムライタ: