そろそろ夏も終わり気温も下がってきたのだが、温度計が欲しかったのでmbedで作ってみようと思った。
温度センサーはLM61BIZという秋月で安く売っているセンサー。
mbedのAnalogInの定義によって、floatの値がかえってくる。値は10bitsのADCなので、測定電圧/電源電圧(3.3V)を10bitsで0.0~1.0で表している。つまり、AnalogInの値*3300/1024でセンサーの実際の値がわかる。(今回電源電圧は3.35Vだったので3350を使用)
センサーの値から温度を求めるには、
温度=(測定電圧(V)-0.6(V))*100(℃)
で良いはずであるが、なぜか家にある他の温度計より2℃程度低い。実際体感温度からもこのセンサーは低く表示しているのでは、と思ってしまう。
ようわからん。
以下が実際のコード。
#include “mbed.h” #include “TextLCD.h”TextLCD g_lcd(dp25, dp26, dp1, dp2, dp4, dp6); // RS, E, DB4, DB5, DB6, DB7 AnalogIn temp_in(dp13); int main() { wait(0.1); while(1) { |
ところで、LCDのピンは2列なのでブレッドボードに直接ささらないので、アダプタを作ってみた。
大したものではないが、LCDを取り扱いやすくなった。
以下は覚書
mbedはプログラムの書き込みはISPモードになるのが必要で、RESETとISPエントリーピンを起動時にLOWにしておき、先にRESETをHIGHにすれば、ISPモードになる。
しなぷすさんのツールLPCISPは、このあたりを自動でやってくれているようで、FT232RLを接続したままではUSBに電源が入っても書き込んだプログラムが有効にならない(ユーザモードにならない)。
書き込んで動作確認したあとは、ISPエントリピンは、電源起動時にHIGHにしておく必要がありそうだ。