Arduino入門

2. デバイス&サンプル

5. 拡張モジュール&サンプル

アクセサリー

6. アプリケーション

Chain Buzzer 使用チュートリアル

1. 準備作業

  • 環境設定:Arduino IDE 入門チュートリアルを参照して IDE をインストールし、使用する開発ボードに対応したボードマネージャーと必要なドライバライブラリをインストールします。
  • 使用するドライバライブラリ:

2. サンプルプログラム

ビルド要件
M5Stack ボードマネージャーのバージョン >= 3.2.4
M5Chain ライブラリのバージョン >= 1.0.8
cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
#include "M5Chain.h"

#define RXD_PIN GPIO_NUM_5  // 47 for the other side of Chain DualKey
#define TXD_PIN GPIO_NUM_6  // 48 for the other side of Chain DualKey

Chain M5Chain;

device_list_t *device_list = NULL;
uint16_t device_count = 0;
uint8_t opr_status = 0;

uint8_t buzzer_id = 0;
bool buzzer_found = false;

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("===========================");
  Serial.println("M5Stack Chain Buzzer Test");

  M5Chain.begin(&Serial2, 115200, RXD_PIN, TXD_PIN);
  while (!M5Chain.isDeviceConnected()) {
    Serial.println("No device connected");
    delay(1000);
  }

  M5Chain.getDeviceNum(&device_count);
  device_list = (device_list_t *)malloc(sizeof(device_list_t));
  device_list->count = device_count;
  device_list->devices = (device_info_t *)malloc(sizeof(device_info_t) * device_count);
  M5Chain.getDeviceList(device_list);

  for (uint16_t i = 0; i < device_count; i++) {
    if (device_list->devices[i].device_type == CHAIN_BUZZER_TYPE_CODE) {
      buzzer_id = device_list->devices[i].id;
      buzzer_found = true;
      Serial.printf("ID[%d] is Chain Buzzer\n", buzzer_id);
      break;
    }
  }

  if (!buzzer_found) {
    Serial.println("Chain Buzzer not found");
    return;
  }

  // Device ID, RGB brightness (0-100), operation status pointer
  M5Chain.setRGBLight(buzzer_id, 50, &opr_status);
  // Device ID, buzzer mode, operation status pointer
  M5Chain.setBuzzerMode(buzzer_id, BUZZER_MODE_AUTO_PLAY, &opr_status);
}

void loop() {
  if (!buzzer_found) {
    delay(1000);
    return;
  }

  uint8_t red[] = {255, 0, 0};
  M5Chain.setRGBValue(buzzer_id, 0, 1, red, sizeof(red), &opr_status);
  // Device ID, frequency (100-10000 Hz), duty (0-100%), duration (ms),
  // operation status pointer
  M5Chain.setBuzzerAutoPlay(buzzer_id, 1000, 50, 500, &opr_status);
  Serial.println("Buzzer: 1000 Hz, 50%, 500 ms");
  delay(1000);

  uint8_t blue[] = {0, 0, 255};
  M5Chain.setRGBValue(buzzer_id, 0, 1, blue, sizeof(blue), &opr_status);
  M5Chain.setBuzzerAutoPlay(buzzer_id, 2000, 50, 500, &opr_status);
  Serial.println("Buzzer: 2000 Hz, 50%, 500 ms");
  delay(1000);
}

Chain Bridge コネクタを使用して、コントローラの Chain DualKey と Chain Buzzer を接続します。接続方向に注意し、下図のように三角形の矢印が Chain DualKey から外側へ向くようにしてください。

IO ピン設定
RXD_PIN = GPIO_NUM_5(GPIO5)
TXD_PIN = GPIO_NUM_6(GPIO6)

この例では、Chain DualKey の GPIO5 を RX、GPIO6 を TX として使用します。Chain Buzzer を Chain DualKey の反対側のポートに接続する場合、または別のコントローラを使用する場合は、実際の配線に合わせてプログラム内の RXD_PIN と TXD_PIN を変更してください。

上記のプログラムをビルドしてデバイスにアップロードし、Arduino IDE の右上にあるボタンをクリックしてシリアルモニタ(Serial Monitor)を開きます。現在再生中のブザー周波数、デューティ比、継続時間が表示されます。Chain Buzzer は赤色と青色を切り替えながら、1000 Hz と 2000 Hz の通知音を交互に鳴らします。

サンプルの動作は次のとおりです:

3. 参考リンク

Page Tools
PDF
On This Page