You are here

PICSYS24-CORE+CLCD-BOOSTERのセンサースケッチ

CLCD-BOOSTERのセンサーを利用するスケッチ

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

PICSYS24-COREでCLCD-BOOSTERを利用したスケッチの実行例

上の写真を見てください。ArduinoにCLCD-BOOSTERを乗せたもの???ではありません。ベースのボードが黒く微妙にArduinoと異なってますよね。PICSYS24-COREです。:-)

CLCD-BOOSTERのジャンパーの設定は以下の通りです。

  • JP1: 1-2をショートし、電源として3.3Vを選択
  • JP3: 2-3をショートし、文字LCDのR/Wをグランドに落とす
  • JP4: ショートし、光センサを接続
  • JP5: 1-2をショートし、温度センサを接続

以下のスケッチとほぼ同じ機能のArduinoのスケッチと見比べてみると、類似と相違が見て取れて面白いかもしれません。



#include "picsys24.h" #include <stdio.h> // sprintf char buf1[10] ; void setup() { pinMode(DX6, INPUT) ; // SW1 pinMode(DX7, INPUT) ; // SW2 pinMode(DX8, INPUT) ; // SW3 pinMode(DX13, OUTPUT) ; // LED1 pinMode(DX10, OUTPUT) ; // LED2 analogReference(EXTERNAL) ; // 2.5Vの電圧リファレンスを利用 // 文字LCDを初期化 CLCD_init(CLCD_RS, CLCD_E, CLCD_DB4, CLCD_DB5, CLCD_DB6, CLCD_DB7) ; // 起動メッセージ CLCD_puts("PICSYS24+BOOSTER") ; CLCD_pos(1, 8) ; CLCD_puts("MicroFan") ; delayMilliseconds(5000) ; } void loop() { int v ; float temp ; // SWの内容をLEDに反映させる digitalWrite(DX13, !digitalRead(DX6)) ; digitalWrite(DX10, !digitalRead(DX7)) ; CLCD_clear() ; // 文字LCDのクリア v = analogRead(AX4) ; // 光センサの読み取り CLCD_pos(0, 0) ; CLCD_puts("\261\266\331\273 ") ; // アカルサ sprintf(buf1, "%4d", v) ; // 4文字分の枠を取って整数値で出力 CLCD_puts(buf1) ; v = analogRead(AX5) ; // 温度センサの読み取り temp = 2.5 / 1024 * v ; // 読み取った値を電圧に換算 temp -= 0.4 ; // 温度センサーの0度のオフセット:400mV temp /= 0.01953 ; // 1度あたり19.53mVの電圧増加 CLCD_pos(1, 0) ; CLCD_puts("\265\335\304\336 ") ; // オンド sprintf(buf1, "%4d", v) ; // 温度センサの生の値 CLCD_puts(buf1) ; CLCD_pos(1, 10) ; sprintf(buf1, "%.1f", temp) ; // 小数点以下1桁の実数値で出力 CLCD_puts(buf1) ; delayMilliseconds(100) ; }

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

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

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