オプションの文字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倍と大きいので、オペアンプなどで増幅しなくてもそれなりに楽しめます。