Arduino Nano R4の活用 ⑮ I2C ロータリー・エンコーダ

 前回、Arduino Nano R4にLEDが並んだModulino Pixelsをつなぎました。このセンサをつないだまま、Arduino Modulinoの一つであるModulino Knobボードをつなぎます。このボードにはロータリー・エンコーダが搭載されていて、利用するのインターフェースはI2Cバスです。

環境

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

Modulino Knobの主なスペック

  • デバイスの名称 Quadrature Rotary Encoder
  • コントローラ STM32C011F4
  • 動作電圧 2.0~3.6V
  • 消費電流 3.4mA
  • レンジ 360°
  • 内部発振器の確度 ±1%
  • 分解能 12ビット ADC
  • インターフェース I2C(0x76)、USART, SPI, I2S

直交ロータリ・エンコーダModulino Knobのボード

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

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

  

接続

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

ライブラリの導入

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

 前回と同じです。

  

  -Arduino Nano R4の活用 ⑭ I2C LEDバー

 

サンプルの実行

 スケッチ例 - Arduino_Modulino - Modulino_Knob - Knob_Basicを選択します。

 実行すると、現在の位置や方向を表示します。

スケッチ

 ノブを押すと内部のスイッチがONになります。その時、LEDの赤色を点灯させます。

  set()はsetup()関数内では有効ですが、loop()関数では無視されるようです。

#include <Arduino_Modulino.h>

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

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

bool isRight= true;

void setup() {
  // Initialize Modulino I2C communication
  Modulino.begin();
  // Detect and connect to pixels module
  leds.begin();
    // Detect and connect to knob module
  knob.begin();
  // Turn off all LEDs one by one
  for (int i = 0; i < 8; i++) {
    setPixel(i, OFF);
    delay(25);
  }
    knob.set(-15);
}

void loop() {

  // Get the current position value of the knob
  int position = knob.get();
  // Check if the knob has been pressed (clicked)
  bool click = knob.isPressed();
  // Get the rotation direction
  isRight = knob.getDirection();

  Serial.print("Current position is: ");
  Serial.println(position);


if (click){
  setPixel(0,RED);
  delay(15);
  setPixel(0, OFF);
}
 delay(100);
}

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

前へ

Arduino Nano R4の活用 ⑭ I2C LEDバー