ArduinoにMicroFan製のシールド"CLCD-BOOSTER"を接続してテストを開始。
まずはなにあれ、MicroFanが公開しているサンプルスケッチを実行してみたのだが、LCDに何も表示されない…。Ethernet Sheildを取り外しても変わらず…。LCD表示だけに限定した最小限のコードだけで構成されるHello World!スケッチを書いて実行してみたが、やはりダメ…。
#includeLiquidCrystal clcd(4, 3, 14, 15, 16, 17); void setup() { clcd.print("hello, world!"); // Print a message to the LCD. } void loop() { }
うーん、おそらくLCDの問題のようなので、とりあえず文字表示は置いておいて、CLCD-BOOSTERに搭載されている光センサと温度センサの正常稼働を確認するために、LCDへの文字出力だけではなく、Serialへの出力も10秒毎に出力するスケッチに修正してアップロードしてみた。
#include#include #define VCC 5.1 #define PHOTO_SENSOR 4 // アナログ4 #define TEMP_SENSOR 5 // アナログ5 #define RCSERVO1 9 // デジタル9 PWM #define RCSERVO2 10 // デジタル10 PWM LiquidCrystal clcd(4, 2, 3, 14, 15, 16, 17); // D3 void setup() { Serial.begin(9600); Serial.println("CLCD-BOOSTER TEST Sketch"); clcd.begin(16, 2) ; // Arduino-0017以降は追加 clcd.clear() ; clcd.setCursor(8,0) ; clcd.print("MicroFan"); clcd.setCursor(4,1) ; clcd.print("CLCD-BOOSTER"); delay(5000) ; // タイトルクレジットを見てね } void loop() { int v ; float temp ; // 温度の計算は実数で v = analogRead(PHOTO_SENSOR) ; Serial.print("Light Count:") ; Serial.println(v) ; clcd.setCursor(0,0) ; clcd.print("\261\266\331\273 ") ; // アカルサ clcd.print(v) ; v = analogRead(TEMP_SENSOR) ; Serial.print("Temp Count:") ; Serial.println(v) ; clcd.setCursor(0,1) ; clcd.print("\265\335\304\336 ") ; // オンド clcd.print(v) ; temp = VCC / 1024 * v ; // 読み取った値を電圧に換算 temp -= 0.4 ; // 温度センサーの0度のオフセット:400mV temp /= 0.01953 ; // 1度あたり19.53mVの電圧増加 clcd.setCursor(9,1) ; Serial.print("Temp:") ; Serial.println(temp) ; clcd.setCursor(9,1) ; clcd.print(temp) ; // 小数点以下2桁まで出るみたいだけど精度的には意味はない clcd.print("\337C") ; // 度C delay(10000) ; }
すると…
おー、Serialには出力されているから、ちゃんとセンサーは稼働している模様です。あとはLCDだなぁ…やっぱり表示されない…。とりあえずMicroFanに問い合わせ中です…。