ATOM Matrixでできること 〜ATOM Matrixの使い方

スポンサーリンク
ATOM Matrix

先日、「ATOM Lite」の動作確認を行いました(記事は こちら)が、今回は、それに引き続き「ATOM Matrix」の動作確認を行います。

「ATOM Matrix」は、「ATOM Lite」と同時に発売されたデバイスで、「ATOM Lite」ではLEDが1灯なのに対し、5 x 5のマトリックスLEDが搭載されています。
また、「M5StickC」に搭載されているのと同じ加速度センサ(MPU6886)も搭載されています。


左から「M5StickC」、「ATOM Matrix」、「ATOM Lite」です。

「M5StickC」よりも、さらに低価格でありながら、加速度センサが搭載されているので、振動データなどを取得するIoTデバイスを、より安価につくることができそうです。

環境構築方法は「ATOM Lite」の時と全く同じ(記事は こちら)で、今回新たに実施することは何もありませんでした。

それでは、サンプルスケッチを使って動作確認してみます。

「ファイル」>「スケッチ例」>「M5Atom」>「Basics」>「LEDSet」を選択します。

「→(マイコンボードに書き込む)」をクリックし、スケッチを「ATOM Matrix」に書き込みます。

「ATOM Matrix」のマトリックスLEDはボタンも兼ねています。このボタンを押すたびに、マトリックスの左上端のLED表示色が「緑」→「赤」→「青」→「白」と変化します。

次に、「ファイル」>「スケッチ例」>「M5Atom」>「Basics」>「Buttom」を開き、「ATOM Matrix」に書き込みます。

このスケッチでは、全てのLEDが発光し、ボタンを押すたびに色が変わります。

次に、「ファイル」>「スケッチ例」>「M5Atom」>「Basics」>「MPU6886」を開き、シリアルモニタに加速度データを出力する箇所のみを若干変更します。

#include "M5Atom.h"

float accX = 0, accY = 0, accZ = 0;
float gyroX = 0, gyroY = 0, gyroZ = 0;
float temp = 0;
bool IMU6886Flag = false;

void setup()
{
    M5.begin(true, false, true);

    if (M5.IMU.Init() != 0)
        IMU6886Flag = false;
    else
        IMU6886Flag = true;
}

void loop()
{

    if (IMU6886Flag == true)
    {
        M5.IMU.getGyroData(&gyroX, &gyroY, &gyroZ);
        M5.IMU.getAccelData(&accX, &accY, &accZ);
        M5.IMU.getTempData(&temp);

        //Serial.printf("%.2f,%.2f,%.2f o/s \r\n", gyroX, gyroY, gyroZ);            // 変更
        Serial.printf("%.2f,%.2f,%.2f\r\n", accX * 1000, accY * 1000, accZ * 1000); // 変更
        //Serial.printf("Temperature : %.2f C \r\n", temp);                         // 変更
    }
    delay(500);
    M5.update();
}

スケッチを「ATOM Matrix」に書き込み、シリアルプロッタを開くと、「ATOM Matrix」の傾き情報がグラフ表示されます。

最後に、LEDを表示するための、簡単なスケッチをつくってみました。
LEDをひとつずつ順番に発光させ、全てが同じ色になったら、次はひとつずつ、違う色に変えていきます。
これを「緑」→「赤」→「青」→「黒」→「白」と繰り返します。
また、「白」の後は一旦、全てを消灯しています。

#include "M5Atom.h"

void setup() {
  M5.begin(true, false, true);
  delay(100);
}

void loop() {
  for(int i=0; i<25; i++) {
    M5.dis.drawpix(i, CRGB::Green);
    delay(100);
  }
  for(int i=0; i<25; i++) {
    M5.dis.drawpix(i, CRGB::Red);
    delay(100);
  }
  for(int i=0; i<25; i++) {
    M5.dis.drawpix(i, CRGB::Blue);
    delay(100);
  }
  for(int i=0; i<25; i++) {
    M5.dis.drawpix(i, CRGB::Black);
    delay(100);
  }
  for(int i=0; i<25; i++) {
    M5.dis.drawpix(i, CRGB::White);
    delay(100);
  }
  M5.dis.clear();
}

問題なく動作しました。

「ATOM Matrix」にはLCDがありませんが、このマトリックスLEDを活用することで、デバイスの動作状況を把握することもできそうです。