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で利用するのにはうってつけです。