Arduino と Human Interface Device (HID) についての話です。
USB <-> シリアル変換に ATmega8u2 とか ATmega16u2 が載っている Arduino はマイコンが二つ載っている事になります。
例えば Arduino UNO や Arduino Mega 2560 は廉価な互換品でない限り USB <-> シリアル変換に ATmega16u2 が使われています。
ICSP2 端子はこの ATmega16u2 をプログラムするためにあり、スケッチを ICSP2 経由で書き込めば、この ATmega16u2 を HID デバイスにする事が可能です。但し、Arduino の USB <-> シリアル変換としての機能は失われてしまいますから、Arduino としてのスケッチは ICSP1 から書き込む事になります。
See Also:
...ですが、今となっては ATmega16u2 をリプログラミングする必然性はあまりなくなっています。何故ならその用途のために Leonardo のような ATmega32u4 搭載 Arduino があるからです。
ATmega32u4 搭載 Arduino (または互換機) には以下のようなものがあります。
Arduboy も ATmega32u4 搭載ですね。これらの Arduino では以下の HID デバイスになるためのライブラリが用意されています。
詳細については Arduino Leonardo のページをご覧ください。
See Also:
micro:bit では BLE HID が使えます。
STM32F103 (Blue Pill) でも HID が使えます。
Arduino で HID デバイスを扱うには USB ホスト機能が必要となります。
USB ホストシールドと Leonardo 系の Arduino を組み合わせると、HID デバイスの入力を読み取り、自身も HID デバイスとして振舞うことができるので、ロガーやコンバータのような事ができます。
ここにある情報が役に立って、「調べる手間が省けたからオマイに飯でもおごってやるよ」 というハートウォーミングな方がいらっしゃいましたら、下のボタンからどうぞ。