CDSのテスト
CDSは最終的に使用しませんでしたが、以下のプログラムでテストしました。
int sensorPin = A4;
int sensorValue = 0;
int powerPin = 5;
void setup() {
pinMode(powerPin, OUTPUT);
digitalWrite(powerPin, HIGH);
Serial.begin(9600); // 速度は意味はない
}
void loop() {
// CDSへの電源を供給(HIGH)してAD変換、完了後にCDSへの電源をOFF(LOW)にする
digitalWrite(powerPin, HIGH);
sensorValue = analogRead(sensorPin);
digitalWrite(powerPin, LOW);
delay(0.1);
// 電圧値に変換
float voltage = sensorValue * (3.3 / 1023.0);
// デバッグ出力
Serial.print(sensorValue);
Serial.print(" ");
Serial.println(voltage);
}
LCDへの表示
LCDへの表示はこちらのpcd8544ライブラリを使用しました。
測定値を表示する大きな文字については、LinuxMintに入っているfreefontのうち使用する数字(とスペース)を以下の手順でCの配列と互換のあるxbm形式に変換した上で編集して、ソースコードに取り込んで使用しました。取り込んだものを起動時にpcd8544ライブラリで表示できるビットマップに変換しています。
$ for i in {0..9};do convert -background white -fill black -font /usr/share/fonts/truetype/freefont/FreeSansBold.ttf -pointsize 36 label:"${i}" d${i}.xbm; done
$ cat d?.xbm >> fonts.c
実際に表示させると、convertで変換する際に(おそらく)誤差拡散アルゴリズムを使用して2値ビットマップに変換しているので、その際に文字のエッジにギザギザがでますが、今回はそのまま使用しています。
MH-Z19Bの制御
以前使ったこちらのライブラリをそのまま使用することにしました。これらでブレッドボード状態でソフトウェアのデバッグを進めました。
これを強引に実装したのがこちらです。
これで放置するとキャリブレーションが行われるはずですが・・・(;_;)
ケースの作成
待っている間にケースを作って入れてみました。強引に実装したので、ケースの構造には悩みました。で、2回の修正を経て、こんな感じになりました。大きさは実測で84mm × 50.5mm × 23.5mm、重さは76gです。普通の名刺より少し小さめ、海外の名刺より少し短いくらいになりましたので、携帯性はOKです。・・・が、電源スイッチをつけるのを忘れてました・・・。
一方で、消費電流がやや大きく、平均でLiPoのところで見て50mAくらいはあるのではないでしょうか。LiPoも表記上は500mAhですが、実際には300mAhくらいかと思いますので、稼働時間は5時間位だと思います。
しかし、ケースを設計している際に違和感はあったんです。『1号機の設計の際にはもっとMH-Z19Bの周りは悩んだような気がするのだが??』と。 〜つづく〜