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を挟みます。