でんげき☆ Network Service

Raspberry Pi 4 で運用実験中 Connect checker

No.8

Arduino Leonardo (Pro Micro) でマルチメディアキーボードを作ろう!

20211203181404-admin.jpeg
 
前回に引き続き Arduino 的な諸々をひとつって事で…マルチメディア・キーボードって云うんですかね?
20211114113829-admin.png
+α的に実装されている音量調節などのキーとかノート PC でよく見かける Fn キーと併用して使える再生とか早送りなどのキーを ATmega32U4 を搭載した Arduino Leonardo (Pro Micro) でどうにかしてみるお話です

そんな今回の実験の様子
202111141138293-admin.jpeg
以前のマウスクリック超連射実験の回路がくっついたままなんで判りにくいですよね…

202111141138291-admin.png
申し訳程度に回路図を描いてみたけど…それでも判りづらいですよね(汗 まぁとにかく 2 番ピンと 3 番ピンを使用しました

今回のマルチメディア・キーボード(?)的な機能を簡単に実装するためにライブラリを追加してみました
202111141138292-admin.jpeg
Arduino IDE で [スケッチ] → [ライブラリをインクルード] → [ライブラリ管理] してライブラリ管理画面を出す

202111141138291-admin.jpeg
目的のライブラリを「hid」ってキーワードで検索して…出てきた「HID-Project」をインストールする ※画面は既にインストール済みだけどまぁそんな感じで(汗

後は Arduino IDE でこんな感じのを用意してそれをマイコンボードに書き込みます

----------

// include the HID library
#include "HID-Project.h" // 今回インストールしたやつをインクルードする

// definitions for each pin used
const int pinLed = LED_BUILTIN;
const int playButton = 2; // 今回使うピン番号
const int fwdButton = 3; // 今回使うピン番号
const int backButton = 4; // 以下今回は使わない(-_-;)
const int volUpButton = 5;
const int volDwnButton = 6;
const int muteButton = 7;


void setup() {
  // define the pin mode for each pin used
  pinMode(pinLed, OUTPUT);
  pinMode(playButton, INPUT_PULLUP); // 今回使うピン番号
  pinMode(fwdButton, INPUT_PULLUP); // 今回使うピン番号
  pinMode(backButton, INPUT_PULLUP); // 以下今回は使わない(-_-;)
  pinMode(volUpButton, INPUT_PULLUP);
  pinMode(volDwnButton, INPUT_PULLUP);
  pinMode(muteButton, INPUT_PULLUP);

  // begin HID connection
  Consumer.begin();
}

void loop() {
  if (!digitalRead(playButton)) {
    digitalWrite(pinLed, HIGH); // turn on LED
    Consumer.write(MEDIA_PLAY_PAUSE); // 一時停止・再生的なコマンド
    delay(500); // 動作確認用の LED 点滅
    digitalWrite(pinLed, LOW); // turn off LED
  }
  
  if (!digitalRead(fwdButton)) {
    digitalWrite(pinLed, HIGH);
    Consumer.write(MEDIA_NEXT); // 次の曲的なコマンド
    delay(500); // 動作確認用の LED 点滅
    digitalWrite(pinLed, LOW);
  }
}

----------

20211114113829-admin.jpeg
Ubuntu 20.04.3 LTS と Audacious 3.10.1 で動作チェックしたところ…「再生/一時停止」と「次の曲」の動作をタクトスイッチの押下にて実現できました やったね!

わりと入手しづらいイメージのマルチメディア・キーボード(?)の拡張部分を Arduino Leonardo (Pro Micro) でどうにかできる事が判明しました 後は程よいケースとスイッチを用意すれば完成なんだけど…それはまた後の話ってかんじで

  :

他にも機能があるっていうか…キーコードは Arduino/libraries/HID-Project/src/HID-APIs/ConsumerAPI.h に定義されています ※ファイルの場所は環境によって異なる場合があります

enum ConsumerKeycode : uint16_t {
  // Some keys might only work with linux
  CONSUMER_POWER = 0x30,
  CONSUMER_SLEEP = 0x32,

  MEDIA_RECORD = 0xB2,
  MEDIA_FAST_FORWARD = 0xB3,
  MEDIA_REWIND = 0xB4,
  MEDIA_NEXT = 0xB5,
  MEDIA_PREVIOUS = 0xB6,
  MEDIA_PREV = 0xB6, // Alias
  MEDIA_STOP = 0xB7,
  MEDIA_PLAY_PAUSE = 0xCD,
  MEDIA_PAUSE = 0xB0,

  MEDIA_VOLUME_MUTE = 0xE2,
  MEDIA_VOL_MUTE = 0xE2, // Alias
  MEDIA_VOLUME_UP = 0xE9,
  MEDIA_VOL_UP = 0xE9, // Alias
  MEDIA_VOLUME_DOWN = 0xEA,
  MEDIA_VOL_DOWN = 0xEA, // Alias

  CONSUMER_BRIGHTNESS_UP = 0x006F,
  CONSUMER_BRIGHTNESS_DOWN = 0x0070,

  CONSUMER_SCREENSAVER = 0x19e,

  CONSUMER_PROGRAMMABLE_BUTTON_CONFIGURATION = 0x182,
  CONSUMER_CONTROL_CONFIGURATION = 0x183,
  CONSUMER_EMAIL_READER = 0x18A,
  CONSUMER_CALCULATOR = 0x192,
  CONSUMER_EXPLORER = 0x194,

  CONSUMER_BROWSER_HOME = 0x223,
  CONSUMER_BROWSER_BACK = 0x224,
  CONSUMER_BROWSER_FORWARD = 0x225,
  CONSUMER_BROWSER_REFRESH = 0x227,
  CONSUMER_BROWSER_BOOKMARKS = 0x22A,

今回使った MEDIA_PLAY_PAUSEMEDIA_NEXT の他にもいろいろあります 例えば CONSUMER_BROWSER_REFRESH を超連打して…いわゆる F5 アタックを実装するのもいいかもしれません ※やめて!(>_<)q

  :

まぁざっくりこんな感じですかね これを用いてちょっと便利な補助キーボードを作れるとイイナ! #Arduino

情報 <3322文字>

DASHBOARD

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■ハッシュタグ:

■カテゴリ:

■日付検索:

■機器状態:

Raspberry Pi 4 Status

編集

RSSフィード