iPhone、iPadなどのiOSにはアクセシビリティという設定があって、1スイッチでiOS機器を操作できるようになっています。
これの外部スイッチ用のスイッチボックスの作成メモです。
いろいろあるみたいですが、とりあえずここではUSBで接続するものを対象にします。無線接続(BLE)のものについてはこちらに
USBで接続する場合にはiPhoneやiPadにLightning - USBカメラアダプタ(ipad proなどのようにUSB-Cのものに関してはUSB-C - USBアダプタ)というものを接続します (スイッチボックスの電源はiphoneからもらいますので、電源が接続できるLightning - USB 3カメラアダプタのほうがよいかと思います)。 そこに以下で作成するスイッチボックスをつなぎます。
iOSに対して半角スペースとかを入力してあげれば良いようです。つまりスイッチボックスはキーボードとしてふるまえば良いみたい。 試しにLightning - USB 3カメラアダプタにキーボードをつないであげると外部スイッチとして登録できます。 なのでサポートする人が自分のiPhoneとかでいろいろ試してみたいときにはLightning - USB 3カメラアダプタにキーボードをつないであげれば色々試してみることができます。
「USBキーボード 自作」とかで検索すればいろいろ出てきます
工作的にはボードとモノラルジャックをつなぐだけなので簡単ですかね。
#include "DigiKeyboard.h"
#define KeyPort 0 //スイッチ入力はP0を使う
bool outputState = true;
void setup() {
pinMode(KeyPort,INPUT_PULLUP); //スイッチ入力ポートの設定、入力ポートとして使う。内部pullup有効
}
void loop() {
usbPoll();
if (digitalRead(KeyPort) == LOW) {
if(!outputState) {
outputState=true;
DigiKeyboard.sendKeyStroke(KEY_SPACE);
}
} else {
outputState = false;
}
DigiKeyboard.delay(50);
}
これで「スケッチ」→「検証・コンパイル」して、エラーが出なければ「スケッチ」→「マイコンボードに書き込む」すると
Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)
と出るので、そしたらDigiSparkボードをパソコンにつなぐと書き込みされます。書き込みが完了すると
running: 100% complete
>> Micronucleus done. Thank you!
と出ます。そしたら書き込み完了です。パソコンからDigiSparkボードを外してください
iPhoneにつなぐと「このデバイスは使えません」とか「外部スイッチが見つかりません」とか出ることがあります。でもそのあと外部スイッチとして使えるようになります。
これはDigiSparkボードに書き込み用のファームウェアが入っていて、USB接続したときにまず書き込み用のファームウェアが働いてそのあとに先ほど書き込んだキーボードのファームウェアが働くためです。