加速度センサ読み取り

このページをAIに渡す

いつものAIに相談

Gemini・その他のAI

このページの情報を添えて、仕組みや使い方、つくりたいものを相談できます。

Geminiを開く

質問文をコピーして、Geminiの入力欄に貼り付けてください。

質問文を確認

目次

概要

4-Sensorsリーフに搭載された加速度センサの値を読み取って、シリアルモニタに表示するサンプルです。

開始前に

AP03用のArduino IDE設定を済ませ、ボードにLeafony STM32 MCUを選択します。センサは AI01 4-Sensors上のLIS3DH です。ライブラリマネージャからAdafruit LIS3DHと、導入時に案内される依存ライブラリをインストールしてください。

スケッチはI2Cアドレス0x19を使用します。アドレスの設定を変更したリーフを使う場合は、I2Cアドレスマップと照合し、LIS3DH_ADDRESSを合わせます。ソースの取得・書き込み・成功確認の進め方はサンプルの動かし方を参照してください。

使用するリーフ

以下のリーフを使用します

TypeNameQ’ty
AZ62Connector Cover1
AI014-Sensors1
AZ01USB1
AP03STM32 MCU1
AV01CR20321
CR2032 coin cell battery1
M2*15mm screw2

リーフの組み立て

下図を参考にリーフを組み立ててみましょう。

assemble1

ソースコード

Arduino IDEで下記のプログラム1を書きましょう。

このスケッチを動かすためには、ライブラリのインストールが必要です。 まだインストールしていない場合は開発環境設定ページを参考にライブラリをインストールしてください。

//=====================================================================
//  Accelerometer
//
//    (c) 2021 LEAFONY SYSTEMS Co., Ltd
//    Released under the MIT license
//    https://opensource.org/licenses/MIT
//
//      Rev.00 2021/04/01  First release
//=====================================================================
#include <Adafruit_LIS3DH.h>

#define LIS3DH_ADDRESS 0x19

Adafruit_LIS3DH accel = Adafruit_LIS3DH();

void setup() {
  // initialize serial communication at 115200 second per second:
  Serial.begin(115200);
  // initialize i2c communication with LIS3DH:
  accel.begin(LIS3DH_ADDRESS);

  accel.setClick(0, 0);                      // Disable Interrupt
  accel.setRange(LIS3DH_RANGE_2_G);          // Full scale +/- 2G
  accel.setDataRate(LIS3DH_DATARATE_10_HZ);  // Data rate = 10Hz

  delay(100);
}

void loop() {
    accel.read();

    Serial.print("X [g] = " + String(accel.x_g));
    Serial.print(", ");
    Serial.print("Y [g] = " + String(accel.y_g));
    Serial.print(", ");
    Serial.print("Z [g] = " + String(accel.z_g));
    Serial.println("");

    delay(100);
}

Accelerometer.ino

実行結果

書き込み後にAP03のプログラムスイッチをRun側に戻し、リセットスイッチを押します。Arduino IDEのシリアルモニタを115200bpsで開くと、X [g]、Y [g]、Z [g]の値が繰り返し表示されます。角度そのものを計算するスケッチではありません。

リーフをゆっくり傾け、各軸の値が変わることを確認します。静止時にも重力の成分が含まれるため、3軸すべてが0になる必要はありません。

うまく動かないとき

症状確認すること
Adafruit_LIS3DH.hが見つからないAdafruit LIS3DHと依存ライブラリの導入を確認する
文字化け・何も表示されないシリアルポートと115200bpsの設定、Run側への切り替え、リセットを確認する
傾けても値が変わらない電源を切ってからAI01の接続を確認し、I2CアドレスとLIS3DH_ADDRESSを照合する

リーフの着脱は電源を切ってから行います。接続・書き込み自体で止まる場合はよくある質問を参照してください。

Footnotes

  1. プログラムは、AVR MCUリーフと同じです。 ↩

リーフ写真
技術資料・サンプル・Q&Aから探せます