Arduino MKR WiFi 1010をデータ入力に使う⑤気圧センサLPS25HB <その2>グラフ

 前回、気圧センサLPS25HBのデータを読み出しました。ここでは、複数回読み、グラフを描きます。

プログラム

 forループの前に1回カラ読みをしています。これは、最初のデータが正しくないからです。

 100回計測します。counter のところで回数は修正できます。pause(0.5);で0.5秒ごとに計測しますが、気圧は急激に変化しないので、もっと間隔は長くてもよい用途もあるでしょう。

 press(t)の式は、長かったので、途中でリターンを入れたら、...が入りました。...を入れたわけではありません。


clear
a = arduino('COM15', 'MKR1010', 'Libraries', 'I2C');
Lps25hb = device(a, 'I2CAddress', 0x5d);

CTRL_REG1 = 0x20;
wakeup    = 0x90;
writeRegister(Lps25hb, CTRL_REG1, wakeup, 'uint8')

PRESS_OUT_XL = 0x28;
READ_BIT     = 0x80;
PRESS_OUT = bitor(PRESS_OUT_XL, READ_BIT);
write(Lps25hb, PRESS_OUT, 'uint8')
PressData = read(Lps25hb, 3, 'uint8');

counter = 1:100;
press = (counter);
for t = counter
    write(Lps25hb, PRESS_OUT);
    PressData = read(Lps25hb, 3, 'uint8');
    press(t) = (bitshift(PressData(3), 16) + bitshift(PressData(2), 8) ...
                + PressData(1)) / 4096;
    fprintf('\nPress is %.3fhPa ', press(t));
    pause(0.5);
    
end

dataS = movmean(press, 30);
plot(counter, press)
hold on
plot(counter, dataS,'LineWidth', 2)
ylabel('気圧 [hPa]');
grid on;
xlabel("時間");

 グラフです。

 movmean()は移動平均の関数です。

plot(counter, press)が青色の取得した気圧データです。

plot(counter, dataS,'LineWidth', 2)のオレンジ色は、移動平均の結果です。hold onで、同じグラフ上に描きます。この後別のグラフにするには、hold offを挟みます。

前へ

Arduino MKR WiFi 1010をデータ入力に使う④気圧センサLPS25HB <その1>

次へ

Arduino MKR WiFi 1010をデータ入力に使う⑥アナログ入力