LoginSignup
1
0

More than 1 year has passed since last update.

digisparkを使ってiOSのアクセシビリティのスイッチコントロール用の外部スイッチボックス作成

Last updated at Posted at 2022-03-26

iPhone、iPadなどのiOSにはアクセシビリティという設定があって、その中のスイッチコントロールという機能を使うとスイッチでiOS機器を操作できるようになっています。

これの外部スイッチ用のスイッチボックスの作成メモです。

iOSの外部スイッチ

とりあえずここではUSBで接続するもの

USBで接続する場合にはiPhoneやiPadにLightning - USBカメラアダプタ(ipad proなどのようにUSB-Cのものに関してはUSB-C - USBアダプタ)というものを接続します (スイッチボックスの電源はiphoneからもらいますので、電源が接続できるLightning - USB 3カメラアダプタのほうがよいかと思います)。 そこに以下で作成するスイッチボックスをつなぎます。

基本的なこと

iOS機器に対して半角スペースとかを入力してあげれば良いようです。つまりスイッチボックスはキーボードとしてふるまえば良いみたい。 試しにLightning - USB 3カメラアダプタにキーボードをつないであげると外部スイッチとして登録できます。 なのでサポートする人が自分のiPhoneとかでいろいろ試してみたいときにはLightning - USB3カメラアダプタにキーボードをつないであげれば色々試してみることができます。

たぶんdegisparkをHIDキーボードにしちゃうのが一番安いですが「USBキーボード 自作」とかで検索すればいろいろ出てきます。

必要なもの

DigiSpark
もう販売終了してしまっているみたいですが、同等品(?)がamazonとかでも買えます。本来のDigiSparkは直刺しのUSB TypeAですが、これだと抜けやすかったりしてちょっと使いにくいです。同等品でmicroUSBのものがありますので、そちらを使った方が幸せになれるかもしれません。ただ何度も抜き差ししているとmicroUSBのものはUSBをつなぐところがとれちゃうことがあるようです。
スイッチ接続用の3.5mmモノラルジャック
スイッチをつなぐためのもの
Arduinoとか
ArduinoでDigiSparkボードを使えるようにしておく。「digispark 開発環境」とかで検索すると色々でてきます

配線

iphone_key.png
工作的にはボードとモノラルジャック(コミュニケーション支援用のスイッチやセンサ類は3.5mmモノラルプラグに出力される)をつなぐだけなので簡単ですかね。

プログラム

iphone_key.ino
#include "DigiKeyboard.h"
#define KeyPort 0

bool outputState = true;

void setup() {
  pinMode(KeyPort,INPUT_PULLUP);
}

void loop() {
  usbPoll();
  if (digitalRead(KeyPort) == LOW) {
    if(!outputState) {
      outputState=true;
      DigiKeyboard.sendKeyStroke(KEY_SPACE);
    }
  } else {
    outputState = false;
  }
  DigiKeyboard.delay(50);
}

注意

iPhoneにつなぐと「このデバイスは使えません」とか「外部スイッチが見つかりません」とか出ることがあります。でもそのあと外部スイッチとして使えるようになります。

これはDigiSparkボードに書き込み用のファームウェアが入っていて、USB接続したときにまず書き込み用のファームウェアが働いてそのあとに先ほど書き込んだキーボードのファームウェアが働くためです

私は試してないけどDigispark ATtiny85 起動までの5秒を取り除くを使うと幸せになれるらしい

参考

ICT救助隊のiPadとスイッチコントロール(pdf)
https://www.rescue-ict.com/souko/iPad_and_SwitchControl_S.pdf

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0