簡単すぎるmbedでシリアル通信:気圧測定

久しぶりのmbed。相変わらず至れり尽くせりで何を書いていいか悩むところだが、今回はLPS25H使用気圧センサーモジュールをI2Cで使用し、PCとシリアル通信でやりとりしてみた。

回路

mbedのプラットフォームからF401REのピンアサインのページを探しこんな感じで配線する。
回路

プログラミング

LPS25Hのデータシートを見ながらI2Cのプログラムをつくろうかなぁと思いながらmbedのサイトでLPS25Hを検索してみると、はい、ありました。
LPS25Hのライブラリ

そしてmbedでのライブラリの使い方検索し、ライブラリの作成ページにて概要を理解し、あとは先ほどのLPS25Hのライブラリのインポートボタンをおせば、8割ぐらいはできたようなもの。

そしてコーディング。今回はPC側からの指令に応答する形にしてみた。mbed側はメインループでセンシングしつつ、シリアル受信イベントで応答するプログラムにしてみた。

【ソースコード】

#include "mbed.h"
#include "LPS25H.h"

LPS25H lps25h(PB_9,PB_8);
int hPa;
float temp;

AnalogIn ain(A0);
DigitalOut myled(LED1);
Serial pc(USBTX, USBRX);
float sensor1;

//受信イベント
void isrRx(){
    char ch;
    ch = pc.getc();
    
    switch(ch){
        case 'a':
            pc.printf("%.3f\n", sensor1);
            break;
        case 'b':
            pc.printf("%d\n", hPa);
            break;
        case 'c':
            pc.printf("%.1f\n", temp);
            break;
    }    
}

int main() {
    pc.baud(38400);
    pc.attach(isrRx,Serial::RxIrq);     //割り込みハンドラ登録
    
    while(1) {
        
        sensor1 = ain.read();               //A0のデータ読み込み
        hPa = lps25h.pressure() / 4096;     //気圧センサ読み込み
        temp = 42.5 + lps25h.temperature() / 480;     //気温読み込み
        
        myled = !myled;
        wait(0.1);
    }
}

動作確認

使い慣れたArduino IDEで動作確認。bを送信すると気圧、cを送信すると気温が返ってくることを確認できた。今後もいろいろありがたく使わせてもらおうmbed。
動作確認

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です