Arduino Nano R4の活用 ⑭ I2C LEDバー

 前回、Arduino Nano R4に動きセンサLSM6DSOXをつなぎました。このセンサをつないだまま、Arduino Modulinoの一つであるModulino Pixelsボードをつなぎます。このボードには8個のRGB LEDが搭載されていて、利用するのインターフェースはI2Cバスです。

環境

  • Arduino IDE;2.3.7
  • Windows11;25H2
  • Arduino Nano R4 1.5.1 PCはマザーボードのUSBポートから直接つなぐ。

Modulino Pixelsの主なスペック

  • デバイスの名称 Eight LC8822-2020
  • コントローラ STM32C011F4
  • 動作電圧 2.0~3.6V
  • 消費電流 33mA @ 3.3 V * 8 + 3.4 mA
  • 分解能 12ビット ADC
  • インターフェース I2C(0x44)、USART, SPI, I2S

RGB LED Modulino Pixelsのボード

 利用したModulino PixelsのボードはArduinoの製品で、HS3003、VL53L4CD、LSM6DSOXTRと同じくスイッチサイエンスから入手しました。

 Arduino Modulinシリーズの中の一つです。I2CバスなどをサポートするためにArm Cortex-M0+の32ビット・マイコンが搭載されています。 

  Modulino Distance

接続

 Arduino Nano R4のQWIICコネクタにつなぎます。

ライブラリの導入

  ライブラリでModulinoを検索して、見つけてきたArduino_Modulinoをインストールをします。

  -

 すべてをインストールします。

サンプルの実行

 スケッチ例 - Arduino_Modulino - Modulino_Pixels - Pixels_Basicを選択します。

 実行すると、全てのLEDが青色に点灯します。

 もう一つのサンプルSimple_Animationは7色の表示ができますが、これを修正して、赤いバーが伸びるような表示のスケッチを作りました。

スケッチ

#include <Arduino_Modulino.h>

// Create a ModulinoPixels object for the LED array
ModulinoPixels leds;

// Define a custom color for turning off LEDs
ModulinoColor OFF(0, 0, 0);
int brightness = 5;

void setup() {
  // Initialize Modulino I2C communication
  Modulino.begin();
  // Detect and connect to pixels module
  leds.begin();
}

void loop() {
  // Light up LEDs in different colors
  // Available colors: RED, BLUE, GREEN, VIOLET, WHITE
  for (int i = 0; i < 8; i++) {

    setPixel(i, RED);

    delay(100);

  }

  // Turn off all LEDs one by one
  for (int i = 0; i < 8; i++) {
    setPixel(i, OFF);
    delay(25);
  }

}

void setPixel(int pixel, ModulinoColor color) {
  leds.set(pixel, color, brightness);
  leds.show();
}

 実行中の様子です。

加速度の値をLEDバーに反映させる

 動きセンサLSM6DSOXの三つの軸の値を合計して、LEDのバーの値に変換します。

 それぞれの軸の加速度は2gほどなので、測定値に0.5を加算して整数にすれば、四捨五入して整数値が得られます。

  

int LEDi = int(x+0.5) + int(y+0.5) + int(z+0.5) ;

 スケッチです。

#include <Arduino_Modulino.h>

// Create a ModulinoPixels object for the LED array
ModulinoPixels leds;
// Create a ModulinoMovement
ModulinoMovement movement;

// Define a custom color for turning off LEDs
ModulinoColor OFF(0, 0, 0);
int brightness = 5;

float x, y, z;

void setup() {
  // Initialize Modulino I2C communication
  Modulino.begin();
  // Detect and connect to pixels module
  leds.begin();
  // Detect and connect to movement sensor module
  movement.begin();
}

void loop() {
  // Read new movement data from the sensor
  movement.update();

  // Get acceleration and gyroscope values
  x = movement.getX();
  y = movement.getY();
  z = movement.getZ();

  // Print acceleration values
  Serial.print("A: ");
  Serial.print(x, 3);
  Serial.print(", ");
  Serial.print(y, 3);
  Serial.print(", ");
  Serial.println(z, 3);

  // Light up LEDs in different colors
  // Available colors: RED, BLUE, GREEN, VIOLET, WHITE
  for (int i = 0; i < 8; i++) {
    int LEDi = int(x+0.5) + int(y+0.5) + int(z+0.5) ;
    Serial.println(LEDi, 3);
    for (int i=0 ; i< LEDi; i++ ){
    setPixel(i, RED);

    delay(100);
    }
  }

  // Turn off all LEDs one by one
  for (int i = 0; i < 8; i++) {
    setPixel(i, OFF);
    delay(15);
  }

}

void setPixel(int pixel, ModulinoColor color) {
  leds.set(pixel, color, brightness);
  leds.show();
}

前へ

Arduino Nano R4の活用 ⑬ I2C 動きセンサLSM6DSOXTR