You are here

PICSYS18-SPで文字LCDにセンサー出力

オプションの文字LCDを接続し、PICSYS18-SPに実装されている温度センサーと光センサーを読み取って、文字LCDに値を出力する例をスケッチしていました。文字LCDを接続すると、7セグメントLEDより多く情報を表示することができるようになります。

センサー情報の文字LCDへの出力

同様なスケッチをArduinoにCLCD-BOOSTERを接続して記述した例も参考にして比較してみてください。


#include "picsys18.h"

void
setup()
{
    pinMode(LED8, OUTPUT) ;
	
    CLCD_initDefault() ;
    CLCD_putrs("Hello! MicroFan") ;
    CLCD_setCursor(5, 1) ;
    CLCD_putrs("PICSYS18-SP") ;
	
    analogReference(EXTERNAL) ; // 4.096V電圧リファレンスの利用
	
    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 = 4.096 / 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
	
    digitalWrite(LED8, ((int)millis()) & 0x200) ; // ハートビート:約1秒
    delayMilliseconds(500) ;
}

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

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

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

開発ソフト: 
チップファミリー: