メインコンテンツに移動

mbedでLM61温度を知る

シリアルで読み込みができているみたいだから、mbedで取得してみた。

最近Pythonずっといじってたためか、配列の要素取り出すのに、スライスするというのが頭にこびりついていて、要素ごと取り出して計算させていたが、1日ぐらいでようやく、頭がすっきりしてきた。年取ると、頭の切り替えしにえらく時間がかかる。

#include "mbed.h"

DigitalOut myled(LED2);
Serial tocos(PTE0,PTE1);
Serial pc(USBTX,USBRX);

int main() {
    tocos.baud(115200);
    pc.baud(115200);

    char recv_str[64];
    char ad1_str[5]={'\0'};
    char ad1h_str[5]={'\0'};
    int ad1,ad1h;
    float lm61;
    while(1) {
        while( tocos.getc() != 0x3A );  // 0x3A=":"
        for(int i=0;i<49;i++){
            recv_str[i] = tocos.getc();
        }
        recv_str[49]=NULL;
        // 78811501B781003BB6782A05000B291B000033FFFFFFFFA3
        // 012345678901234567890123456789012345678901234567
        strncpy(ad1_str,recv_str+36,2);
        strncpy(ad1h_str,recv_str+44,2);
        
        ad1 = strtol(ad1_str,NULL,16);
        ad1h= strtol(ad1h_str,NULL,16) & 0x03;
        ad1 = (ad1 * 4 + ad1h) * 4;
        lm61= ((float)ad1 - 600.0)/10.0;
        myled = 0;
        pc.printf(":%s\n\r",recv_str);
        pc.printf("LM61=%+5.1f\n\r",lm61);
        myled = 1;
    }
}

mbedのUARTで受けて、それをPCに接続したmbedをUARTで開いて、さらに送信する。この結果

:78811501CF81003BB67804A3000B371B000032FFFFFFFE07
LM61=+20.8

一応、思い通りに表示されているようだ。

さらに、TFTで表示させるところまで作って終わりにしよう。

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
  • 行と段落は自動的に折り返されます。