// 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); } }
Arduino Leonardo (Pro Micro) でマルチメディアキーボードを作ろう!
前回に引き続き Arduino 的な諸々をひとつって事で…マルチメディア・キーボードって云うんですかね?
+α的に実装されている音量調節などのキーとかノート PC でよく見かける Fn キーと併用して使える再生とか早送りなどのキーを ATmega32U4 を搭載した Arduino Leonardo (Pro Micro) でどうにかしてみるお話です
そんな今回の実験の様子
以前のマウスクリック超連射実験の回路がくっついたままなんで判りにくいですよね…
申し訳程度に回路図を描いてみたけど…それでも判りづらいですよね(汗 まぁとにかく 2 番ピンと 3 番ピンを使用しました
今回のマルチメディア・キーボード(?)的な機能を簡単に実装するためにライブラリを追加してみました
Arduino IDE で [スケッチ] → [ライブラリをインクルード] → [ライブラリ管理] してライブラリ管理画面を出す
目的のライブラリを「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);
}
}
----------
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_PAUSE と MEDIA_NEXT の他にもいろいろあります 例えば CONSUMER_BROWSER_REFRESH を超連打して…いわゆる F5 アタックを実装するのもいいかもしれません ※やめて!(>_<)q
:
まぁざっくりこんな感じですかね これを用いてちょっと便利な補助キーボードを作れるとイイナ! #Arduino